私が持っているコード・フラグメント
Integer i1 = new Integer(a);
Integer i2 = new Integer(b);
if (i1 == i2)
{
// ...
}
'A' と 'b' は、小さな数字がある場合(例えば0- 20)、i1 == i2が真を返す。
しかし、 'a'と 'b'が大きければ、i1 == i2は再び偽です!
どうすればいいですか?
私が持っているコード・フラグメント
Integer i1 = new Integer(a);
Integer i2 = new Integer(b);
if (i1 == i2)
{
// ...
}
'A' と 'b' は、小さな数字がある場合(例えば0- 20)、i1 == i2が真を返す。
しかし、 'a'と 'b'が大きければ、i1 == i2は再び偽です!
どうすればいいですか?
整数値のプールについて詳しくは、こちらをご覧ください。
'a'と 'b'が-127と128の間にある場合、i1 == i2が真を返します。
else i1 == i2 falseを返す
より良い使用方法。
場合(i1.equals(I2))
{}
あなたがオブジェクトではなくデータ型を使用している点に注意してください。 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)