次のコードでは、objオブジェクトとobj2オブジェクトの作成方法の違いを理解できません。特に、プリミティブがオブジェクトにどのようにキャストされるかはわかりません。ここで他の質問のいくつかを見て、私はこれが不可能だと思いました。ただし、次のプログラムはコンパイルされ、正常に実行されます。前者の場合、出力はfalseであり、後者の場合、出力はtrueです。
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);
}
}