黑马程序员技术交流社区
标题:
请问这个为什么是true
[打印本页]
作者:
浩南酷酷
时间:
2014-2-10 09:38
标题:
请问这个为什么是true
Integer i1 = 345;
Integer i2 = 345;
System.out.println(i1 == i2);
System.out.println(i1.equals(i2));
Integer i3 = Integer.valueOf(9);
Integer i4 = Integer.valueOf(9);
System.out.println(i3 == i4);
System.out.println(i3.equals(i4));
这个 == 的我知道了,在一个字节内的数创建对象只要调用以前的就好,所以i1==i2是false,i3==i4是true
可是equals的为什么都是true?
作者:
guhaibin
时间:
2014-2-10 09:44
equals比较的不是内存地址,是值,所以是TRUE
作者:
lixiuliang
时间:
2014-2-10 09:47
因为Integer重写了equals()方法
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
复制代码
作者:
廉伟杰
时间:
2014-2-10 20:49
亲,看下Integar的源码就出来的,主要是因为重写了equals方法
作者:
奋斗的小胖子
时间:
2014-2-11 09:54
equals比较此对象与指定对象。当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true。在这里包含的值一对是345,一对是9.他们的值都一样所以相同
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2