A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Camwly 中级黑马   /  2015-11-29 23:14  /  2057 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,为什么
}

19 个回复

倒序浏览
路过  顶一下
回复 使用道具 举报
yubail 来自手机 中级黑马 2015-11-29 23:34:26
藤椅
我就顶一下
回复 使用道具 举报
两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false

评分

参与人数 1技术分 +1 收起 理由
洋葱头头 + 1

查看全部评分

回复 使用道具 举报
楼上正解
回复 使用道具 举报
好深奥的问题,,
回复 使用道具 举报
段江波 发表于 2015-11-29 23:43
两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false

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

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

赞!正解
回复 使用道具 举报
超出了范围,。。。。
回复 使用道具 举报
hrfhwy 中级黑马 2015-12-15 22:34:31
12#
如果数在在byte范围内,不容县开辟空间,所以第二个相同
回复 使用道具 举报
段江波 发表于 2015-12-14 23:11
Integer i = 1000;这是自动装箱(将基本数据类型转换成对象)但是呢   如果你是在-128到127之间呢就会直 ...

这个正解
回复 使用道具 举报
int和Integer有什么区别?
回复 使用道具 举报
看来,需要好好学习一下API!
回复 使用道具 举报
Java1211张美红 发表于 2015-12-16 09:28
int和Integer有什么区别?

Integer 是一个类,是int的扩展,定义了很多的转换方法 int是基本类型,直接存数值,integer是对象,用一个引用指向这个对象。
回复 使用道具 举报
6666666666666666666666
回复 使用道具 举报
anuo 中级黑马 2015-12-16 22:17:42
18#
int 和integer有什么区别...额
回复 使用道具 举报
同问:int 和integer有什么区别.
回复 使用道具 举报
这个题考的是,int和int的包装类,integer不在-128到127之间他就会在堆里边创建一块空间返回false,在这个范围内他会到常量池里找,返回true
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马