1

可能重复:
关于自动装箱和对象相等/身份的 Java 问题

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 条件给出错误?

4

4 回答 4

5

使用.equals() to compares Integer. ==比较参考平等

于 2012-07-13T11:51:32.437 回答
3

==比较实例而不是值。使用int代替,Integer它会工作

于 2012-07-13T11:50:06.833 回答
2

请注意,这Integer是一个对象,而不是原语。您正在比较不同的对象实例

对于这个特定的示例,值得一读有关拳击的内容。

于 2012-07-13T11:50:19.930 回答
1

在 Java 中,使用 Object 函数 Object.equals(Object) 来比较对象。只有使用原始 int 时,该比较才能正常工作。

于 2012-07-13T11:50:31.010 回答