黑马程序员技术交流社区
标题:
Integer包装类的问题,请教了。。。
[打印本页]
作者:
苏乞儿
时间:
2014-9-13 02:21
标题:
Integer包装类的问题,请教了。。。
Integer i=127;
Integer j=127;
sop(i==j);//true??????
Integer a=128;
Integer b=128;
sop(a==b);//false??????
"=="不是比较的是哈希值吗,都应为false啊?求大牛科普。。
作者:
xpaibeyond
时间:
2014-9-13 02:28
在自动装箱时对于byte范围的值,它们被装箱为Integer对象后,会存在内存中被重用。
作者:
The_king丶
时间:
2014-9-13 08:42
* 当基本正数数据类型在装箱为Integer类型时,0~127之间的数字装箱后会被缓存起来,当下次对同样的数字装箱时 * 两个Integer对象是相等的,即指向同一块内存,而当数字超过127后,自动装箱后不会被缓存,再次装箱同样大于127的数字时
作者:
优乐
时间:
2014-9-13 12:24
Integer在-128 到 127是不会自动装箱的,也就是说不会再创建一个新的Integer对象,应为他早已经创建好了-128到127的Integer对象,他会直接把这些创建好的对象赋给引用变量。
为什么会先创建好了这些对象,因为这些对象常用,叫什么模式来着,我也忘了,你可以去看看那视频!!!
当不在-128到127的时候就会自动装箱,例如 Integer a=128;就相当于Integer a=new Integer(128);所以你在用
Integer b=128;他又会创建一个Integer对象,相当于Integer b=new Integer(128);
所以你说的a和b是2个不同的对象,所以a==b就为false了
作者:
苏乞儿
时间:
2014-9-13 20:38
谢谢大牛们,我明白了,,,,,:D
作者:
pvting
时间:
2014-9-13 22:58
上面未做装箱处理,下面做了装箱处理,这是Java规定,也是sun工程师深思熟虑的结果
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2