版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java自动装箱与拆箱及其陷阱分析 本文档格式为WORD,感谢你的阅读。 最新最全的 学术论文 期刊文献 年终总结 年终报告 工作总结 个人总结 述职报告 实习报告 单位总结 演讲稿Java自动装箱与拆箱及其陷阱分析Java中一个非常重要也非常有趣的特性,就是自动装箱与拆箱,本文是搜索整理的关于Java自动装箱与拆箱及其陷阱分析,给大家做个参考,希望对大家有所帮助!想了解更多相关信息请持续关注我们!自动装箱(Autoboxing)大家在平时编写Java程序时,都常常以以下方式来定义一个Integer对象:Integer i=100;从上面的代码中,大家可以得知,i为一个Integer类型的引用
2、,100为Java中的基础数据类型(primitive data type)。而这种直接将一个基础数据类型传给其相应的封装类(wrapper class)的做法,便是自动装箱(Autoboxing)。在jdk 1.5中,自动装箱首次被引入。而在jdk 1.5之前,如果你想要定义一个value为100的Integer对象,则需要这样做:Integer i=new Integer (100);我们在以上代码“Integer i=100;”处打一个断点,跟踪一下。接下来,我们可以看到,程序跳转到了Integer类的valueOf(int i)方法中/* Returns a instance repr
3、esenting the specified* value.* If a new instance is not required, this method* should generally be used in preference to the constructor* link #Integer(int), as this method is likely to yield* significantly better space and time performance by caching* frequently requested values.* param i an value
4、.* return a .* since 1.5public static Integer valueOf(int i) if(i = -128 i = -128 i =-128且i=IntegerCache.high时,直接返回IntegerCache.cachei + 128。其中,IntegerCache为Integer的内部静态类,其原码如下:private static class IntegerCache static final int high;static final Integer cache;static final int low = -128;/ high value
5、 may be configured by propertyint h = 127;if (integerCacheHighPropValue != null) / Use Long.decode here to avoid invoking methods that/ require Integers autoboxing cache to be initializedint i = Long.decode(integerCacheHighPropValue).intValue();i = Math.max(i, 127);/ Maximum array size is Integer.MA
6、X_VALUEh = Math.min(i, Integer.MAX_VALUE - -low);high = h;cache = new Integer(high - low) + 1;int j = low;for(int k = 0; k cache.length; k+)cachek = new Integer(j+);private IntegerCache() 我们可以清楚地看到,IntegerCache有静态成员变量cache,为一个拥有256个元素的数组。在IntegerCache中也对cache进行了初始化,即第i个元素是值为i-128的Integer对象。而-128至127
7、是最常用的Integer对象,这样的做法也在很大程度上提高了性能。也正因为如此,“Integeri1=100;Integer i2=100;”,i1与i2得到是相同的对象。对比扩展中的第二个实验,我们得知,当封装类与基础类型进行=运行时,封装类会进行拆箱,拆箱结果与基础类型对比值;而两个封装类进行=运行时,与其它的对象进行=运行一样,对比两个对象的地址,也即判断是否两个引用是否指向同一个对象。Java自动装箱与拆箱及其陷阱分析(2)http:/m.kaoshi./java/438768.html阅读相关文档:java写入文件的几种方法 java中File类的使用方法有哪些 Java File类有哪些常用方法 java File类的基本使用方法 常用java正则表达式介绍 Javascript实现全选并赋值给文本框代码实例 javascript中js闭包的深入理解 2017年3月计算机二级考试C语言模拟试题及答案 2017计算机二级C语言基础试题 2017年3月计算机二级C语言复习题及答案 2017计算机二级C+模拟题及答案 2017年3月计算机二级C语言考前操作题练习 C语言的常见误用和知识汇总 全国计算机二级考试C语言备考试题及答案 2017计算机二级
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 山东省潍坊市潍城区2025-2026学年初三考前第二次模拟考试语文试题含解析
- 江苏省徐州邳州市2026年中考模拟考试(第四次统测)英语试题含解析
- 内蒙古乌海市2026届初三下英语试题第四次月考试卷解答含解析
- 云南省昆明市盘龙区禄劝县重点名校2026届初三英语试题周练试卷含解析
- 浙江省德清县联考2026年初三教学质量检测试题(一)英语试题试卷含解析
- 江苏省宜兴市周铁区达标名校2025-2026学年初三下学期月考英语试题含解析
- 重庆市西南大附属中学2026年初三4月调研测试物理试题试卷含解析
- (正式版)DB37∕T 1635-2010 《夏玉米简化栽培技术规程》
- 慢阻肺急性加重合并II型呼吸衰竭个案护理
- 土地使用权出租合同
- 基于异丁烯制备甲基丙烯酸甲酯【MMA】方法的五万吨年产量生产工艺设计16000字【论文】
- 缺血性肠病课件
- 违纪违法反面典型案例剖析材料汇编3篇
- 黄金冶炼项目可行性研究报告
- 胆囊癌完整版本
- 第15课《十月革命与苏联社会主义建设》中职高一下学期高教版(2023)世界历史全一册
- 十期牛黄清心丸
- 缠论-简单就是美
- JT-T-798-2019路用废胎胶粉橡胶沥青
- 手术室应对特殊感染手术的应急预案
- 2.1科学探究感应电流的方向课件-高二物理(2019选择性)
评论
0/150
提交评论