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 の条件が false になるのはなぜですか?

4

4 に答える 4

5

を使用し.equals() to compares Integerます。==refrencesの平等を比較します

于 2012-07-13T11:51:32.437 に答える
3

==値ではなくインスタンスを比較します。int代わりに使用Integerすると機能します

于 2012-07-13T11:50:06.833 に答える
2

Integerはプリミティブではなくオブジェクトであることに注意してください。異なるオブジェクトインスタンスを比較しています。

この特定の例については、boxingについて読む価値があります。

于 2012-07-13T11:50:19.930 に答える
1

Java では、オブジェクト関数 Object.equals(Object) を使用してオブジェクトを比較します。その比較は、プリミティブ int を使用した場合にのみ正しく機能します。

于 2012-07-13T11:50:31.010 に答える