比较2个整数值会给出不同的输出

时间:2012-07-13 11:48:08

标签: java

  

可能重复:
  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条件假?

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

对于这个特定的例子,值得阅读boxing

答案 3 :(得分:1)

在Java中使用Object函数Object.equals(Object)来比较对象。这种比较只能使用原语int。

才能正常工作