次のコードでobjオブジェクトとobj2オブジェクトの作成方法の違いを理解できません。特に、プリミティブがどのようにオブジェクトにキャストされるのかはわかりません。他のいくつかの質問を見ると、これは不可能だと思った。しかし、以下のプログラムはコンパイルして正常に動作します。最初のケースでは、出力はfalseであり、2番目のケースではtrueです。== Javaのオブジェクトの演算子
public class Test {
public static void main(String args[]){
Integer num = new Integer(3) ;
Object obj = num;
Integer[] integerArr = {1, 2, 3, 4};
Object[] objArr = integerArr;
boolean contains = false;
for (int i = 0; i < objArr.length; i++){
if (objArr[i] == obj){
contains = true;
break;
}
}
System.out.println(contains);
int num2 = 3 ;
Object obj2 = num2;
Integer[] integerArr2 = {1, 2, 3, 4};
Object[] objArr2 = integerArr2;
boolean contains2 = false;
for (int i = 0; i < objArr2.length; i++){
if (objArr2[i] == obj2){
contains2 = true;
break;
}
}
System.out.println(contains2);
}
}
あなたは幸いです。 'Integer'オブジェクトは小さな値のためにキャッシュされます。 – Mysticial
@神秘的な:ありがとう –
複製、複製、複製..今すぐそれらを見つける。 –