黑马程序员技术交流社区

标题: 遇到个问题,关于两数是否相等的 [打印本页]

作者: Camwly    时间: 2015-11-29 23:14
标题: 遇到个问题,关于两数是否相等的
public static void main(String[] args) {
        int a=1000;
        int b=1000;
        System.out.println(a==b);//返回true
        Integer int1=10;
        Integer int2=10;
        System.out.println(int1==int2);//返回true
        Integer int3=1000;
        Integer int4=1000;
        System.out.println(int3==int4);//这里返回false,为什么
}
作者: 队长别开枪是我    时间: 2015-11-29 23:25
路过  顶一下
作者: yubail    时间: 2015-11-29 23:34
我就顶一下
作者: 段江波    时间: 2015-11-29 23:43
两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false
作者: 1018chenhaiyang    时间: 2015-11-30 11:44
楼上正解
作者: Good_Man    时间: 2015-11-30 13:21
好深奥的问题,,
作者: 洋葱头头    时间: 2015-11-30 15:36
段江波 发表于 2015-11-29 23:43
两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false

你这样解释估计楼主理解不了  你用Integer=1000; 实际上valueOf();  当这个数在byte范围内,Integer中实事先会有,所以两次返回的都是一个地址,如果你超过了byte范围,就会重新new一个, 而==是比较的地址 从新new出来的地址当然不一样
作者: xiaoziyk    时间: 2015-11-30 19:21
最后一个比较的是地址值
作者: 段江波    时间: 2015-12-14 23:11
洋葱头头 发表于 2015-11-30 15:36
你这样解释估计楼主理解不了  你用Integer=1000; 实际上valueOf();  当这个数在byte范围内,Integer中实事 ...

Integer i = 1000;这是自动装箱(将基本数据类型转换成对象)但是呢   如果你是在-128到127之间呢就会直接从常量池里拿出来用超出这个范围就会再new一个    而==是比较的地址 从新new出来的地址当然不一样-----期间可以查下API   
作者: chirst123    时间: 2015-12-14 23:48
段江波 发表于 2015-12-14 23:11
Integer i = 1000;这是自动装箱(将基本数据类型转换成对象)但是呢   如果你是在-128到127之间呢就会直 ...

赞!正解
作者: 唐洪超    时间: 2015-12-15 00:35
超出了范围,。。。。
作者: hrfhwy    时间: 2015-12-15 22:34
如果数在在byte范围内,不容县开辟空间,所以第二个相同
作者: xingchen5645    时间: 2015-12-16 02:09
段江波 发表于 2015-12-14 23:11
Integer i = 1000;这是自动装箱(将基本数据类型转换成对象)但是呢   如果你是在-128到127之间呢就会直 ...

这个正解
作者: Java1211张美红    时间: 2015-12-16 09:28
int和Integer有什么区别?
作者: Java1211张美红    时间: 2015-12-16 09:29
看来,需要好好学习一下API!
作者: 段江波    时间: 2015-12-16 20:57
Java1211张美红 发表于 2015-12-16 09:28
int和Integer有什么区别?

Integer 是一个类,是int的扩展,定义了很多的转换方法 int是基本类型,直接存数值,integer是对象,用一个引用指向这个对象。
作者: duluhuang    时间: 2015-12-16 21:04
6666666666666666666666
作者: anuo    时间: 2015-12-16 22:17
int 和integer有什么区别...额
作者: 洪志豪1994    时间: 2015-12-17 20:11
同问:int 和integer有什么区别.
作者: yangzelin    时间: 2015-12-17 20:44
这个题考的是,int和int的包装类,integer不在-128到127之间他就会在堆里边创建一块空间返回false,在这个范围内他会到常量池里找,返回true




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