可能重复:
Java question about autoboxing and object equality / identity
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = 210;
Integer i4 = 210;
if(i1 ==i2){
System.out.println("True");
}else{
System.out.println("False");
}
if(i3==i4){
System.out.println("True");
}else{
System.out.println("False");
}
if(Integer.valueOf(10) ==Integer.valueOf(10)){
System.out.println("True");
}else{
System.out.println("False");
}
if(Integer.valueOf(210) ==Integer.valueOf(210)){
System.out.println("True");
}else{
System.out.println("False");
}
答案是
真
假
真
假
为什么它给2和4条件假?
答案 0 :(得分:5)
使用.equals() to compares Integer
。==
比较引用平等
答案 1 :(得分:3)
==
比较实例而不是值。使用int
代替Integer
,它将起作用
答案 2 :(得分:2)
请注意Integer
是一个对象,而不是一个原语。您正在比较不同的对象实例。
对于这个特定的例子,值得阅读boxing。
答案 3 :(得分:1)
在Java中使用Object函数Object.equals(Object)来比较对象。这种比较只能使用原语int。
才能正常工作