黑马程序员技术交流社区

标题: 有关==和equals的问题 [打印本页]

作者: 流水0215    时间: 2015-5-23 23:52
标题: 有关==和equals的问题
Integer aa = 200;
Integer bb = 200;               
System.out.println(aa==bb); //False
System.out.println(aa.equals(bb)); //True
System.out.println("====================");
Integer aaa = -128;
Integer bbb = -128;               
System.out.println(aaa==bbb);//True
System.out.println(aaa.equals(bbb));//True
大家知道在华丽的等号分割线上面和下面的结果为什么不一样嘛?
作者: Amu    时间: 2015-5-24 00:07
JDK 1.5出现的新特性 ,因为当数值在byte范围内(-128~127):如果该数值已存在不会再开辟新空间
第一个比较值不在byte范围内,所以两个对象都会开辟空间,所以地址值不同
第二个比较值在范围内,所以bbb不会开辟空间
作者: lijiansheng    时间: 2015-5-26 16:31
原来如此
作者: 郭.威    时间: 2015-5-26 22:09
==比的是地址,equals比的是对象
作者: 年华虚度    时间: 2015-5-26 22:38
郭.威 发表于 2015-5-26 22:09
==比的是地址,equals比的是对象

学习了!!
作者: Melo    时间: 2015-5-26 22:38
这个可能和常量池有关吧  模模糊糊有点印象
作者: 景彬    时间: 2015-5-26 23:21
Amu 发表于 2015-5-24 00:07
JDK 1.5出现的新特性 ,因为当数值在byte范围内(-128~127):如果该数值已存在不会再开辟新空间
第一个比较 ...

涨姿势了!
作者: ddddk    时间: 2015-5-26 23:25
Amu 发表于 2015-5-24 00:07
JDK 1.5出现的新特性 ,因为当数值在byte范围内(-128~127):如果该数值已存在不会再开辟新空间
第一个比较 ...

学习了 这个真的容易忽略
作者: 谢晓明    时间: 2015-5-26 23:29
这些可能就面试会用吧,开发应该没什么用




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