黑马程序员技术交流社区

标题: Integer x=128,Integer y=128,x==y ?? [打印本页]

作者: liufeibo    时间: 2015-9-17 15:05
标题: Integer x=128,Integer y=128,x==y ??
Integer x=128,Integer y=128,x==y ??
作者: Adualtbird    时间: 2015-9-17 15:10
我记得老师好像说过,基本数据类型,在128以内,当再次需要改数据时,系统不会再创建新的数据,而是直接把引用附给新的引用,所以x==y是对的
作者: 生存追求    时间: 2015-9-17 15:13
不等于,x和y是两个不同的对象,对象之间的比较是比较他们的地址
作者: 大木木    时间: 2015-9-17 15:46
超过127肯定是不对等的
作者: 胡几手    时间: 2015-9-17 16:05
Adualtbird 发表于 2015-9-17 15:10
我记得老师好像说过,基本数据类型,在128以内,当再次需要改数据时,系统不会再创建新的数据,而是直接把 ...

128以内不包含128,左移x==y是false,如果是127,x==y就是true了。
作者: lion_good    时间: 2015-9-17 16:56
楼上正解

作者: leaf168    时间: 2015-9-17 18:25
结果是 true
作者: 清明月雨上    时间: 2015-9-17 21:26
false  超过了127 系统常量池里面就会对 Integer类型 new 对象了
作者: 然后呢8908    时间: 2015-9-17 21:30
false的都是正解,127最大了
作者: michael_wlq    时间: 2015-9-17 21:50
Adualtbird 发表于 2015-9-17 15:10
我记得老师好像说过,基本数据类型,在128以内,当再次需要改数据时,系统不会再创建新的数据,而是直接把 ...

不包括128的
作者: Adualtbird    时间: 2015-9-17 21:59
恩,是我记错了
作者: sniper170fly    时间: 2015-9-17 22:09
false是正解,这是整型的自动拆装箱实现的,在-128到127内自动比较大小,超过的话会创建对象,对象的地址肯定是不一样的。

/**
* 测试Integer
* @author Adam
*
*/

public class Test1 {

        public static void main(String[] args) {
                Integer i1 = -128;
                Integer i2 = -128;
               
                Integer i3 = 127;
                Integer i4 = 127;
               
                Integer i5 = 128;
                Integer i6 = 128;
               
                System.out.println("i1==i2:"+(i1==i2));
                System.out.println("i3==i4:"+(i3==i4));
                System.out.println("i5==i6:"+(i5==i6));
        }

}
结果:
i1==i2:true
i3==i4:true
i5==i6:false

作者: 德胜    时间: 2015-9-17 22:17
不相等,Integer每次新定义对象都会重新分配内存,同时分配给其新的对应地址,尽管数值相同,也不是同一个Integer型对象,所以X==y不对。但是如果你把他们转化成整数型int数据,那就相等了
作者: 德胜    时间: 2015-9-17 22:18
Adualtbird 发表于 2015-9-17 15:10
我记得老师好像说过,基本数据类型,在128以内,当再次需要改数据时,系统不会再创建新的数据,而是直接把 ...

老师当时说的是Byte型数据
作者: Adualtbird    时间: 2015-9-17 22:47
那节课是多少,记得不是很清楚了
作者: 瑞雪雄起    时间: 2015-9-17 23:01
这主要是编译器采取的优化策略,如果<=127;它会采取一个优化策略,把该对象缓存,但如果用new的话就不会出现上述情况,高于127的话,就禁止了这项缓存优化
作者: 天涯莫名    时间: 2015-9-17 23:09
路过,顶一下
作者: yangshibai    时间: 2015-9-17 23:18
再来复习一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2