黑马程序员技术交流社区
标题:
自动装箱的问题
[打印本页]
作者:
陈帅雷
时间:
2011-12-22 14:12
标题:
自动装箱的问题
本帖最后由 陈帅雷 于 2011-12-22 22:45 编辑
Integer i1 = 13;
Integer i2 = 13;
System.out.println(i1 == i2);//这里为什么是true?
Integer i3 = 155;
Integer i4 = 155;
System.out.println(i3 == i4);//这里为什么是false?
作者:
马德强
时间:
2011-12-22 14:17
Integer在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,
所以i1 ,i2实际上参考至同一个对象。
如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,
即相当于每次装箱时都新建一个 Integer对象
作者:
房宝彬
时间:
2011-12-22 14:17
跟着学,我还没学到装箱,不过看代码 好象是不是因为 数值变大了?
作者:
黄达标
时间:
2011-12-22 14:19
因为,在JDK1.5之后,当数值在byte范围之内(-128到127)的时候,如果该数值已经存在,则不会开辟新的空间。
也就是说i1和i2指向的是同一个对象,而i3和i4则是指向两个对象。
作者:
房宝彬
时间:
2011-12-22 14:21
马德强 发表于 2011-12-22 14:17
Integer在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,
所以i ...
我猜对了:lol
作者:
周胜
时间:
2011-12-22 15:00
自动装箱的值是有范围的。超过这个范围两个引用就不相同了。-128~127~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2