次のコードがあります。
public class Test {
public static void main(String[] args) {
Integer alpha = new Integer(1);
Integer foo = new Integer(1);
if(alpha == foo) {
System.out.println("1. true");
}
if(alpha.equals(foo)) {
System.out.println("2. true");
}
}
}
出力は次のとおりです。
2. true
ただし、Integer object
toのタイプを変更するint
と、次のように異なる出力が生成されます。
public class Test {
public static void main(String[] args) {
Integer alpha = new Integer(1);
int foo = 1;
if(alpha == foo) {
System.out.println("1. true");
}
if(alpha.equals(foo)) {
System.out.println("2. true");
}
}
}
新しい出力:
1. true
2. true
これはどうしてですか?最初のコード例で出力されないのはなぜ1. true
ですか?