2012-02-15 5 views
0

可能性の重複:
Why is == true for some Integer objects?異なる整数値

私が持っているコード・フラグメント

Integer i1 = new Integer(a); 
Integer i2 = new Integer(b); 
if (i1 == i2) 
{ 
// ... 
} 

'A' と 'b' は、小さな数字がある場合(例えば0- 20)、i1 == i2が真を返す。
しかし、 'a'と 'b'が大きければ、i1 == i2は再び偽です!
どうすればいいですか?

答えて

1

整数値のプールについて詳しくは、こちらをご覧ください。
'a'と 'b'が-127と128の間にある場合、i1 == i2が真を返します。
else i1 == i2 falseを返す
より良い使用方法。
場合(i1.equals(I2))
{}

0

あなたがオブジェクトではなくデータ型を使用している点に注意してください。 Integerには以下のように定義されたequalsメソッドがあります。

このオブジェクトを指定されたオブジェクトと比較します。 で、引数がnullでなく、 にこのオブジェクトと同じint値を含むIntegerオブジェクトの場合にのみ、結果はtrueになります。

通常、オブジェクトの等価性のチェックにはequalsメソッドを使用します。

引用符は次のとおりです。 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Integer.html#equals(java.lang.Object)