Java 初級問題③ 値型と参照型、ラッパークラス
問1
public class Test { public static void main(String[] args) { Integer a = 100; Integer b = 100; System.out.println(a == b); //←A System.out.println(a.equals(b)); //←B } }
1-1.Aではなんと表示されるか。 1-2.Bではなんと表示されるか。
問2
public class Test { public static void main(String[] args) { Integer a = new Integer(100); Integer b = new Integer(100); System.out.println(a == b); //←A System.out.println(a.equals(b)); //←B } }
2-1.Aではなんと表示されるか。 2-2.Bではなんと表示されるか。
問3
String str = null; if (str.equals("aaa")) { //←A } if ("aaa".equals(str)) { //←B }
3-1.AとBどちらがエラーになるか。
答え
1-1.true。参照先が同じになる。 1-2.true。値が同じため。 ※Integer a = 100はInteger a = Integer.valueOf(100)と同じ。 ※Integer.valueOf()メソッドはすでに生成したインスタンスが存在する場合にインスタンスを再利用する。(高速でメモリ消費が少ない。)
2-1.false。参照先が違うため。 2-2.true。値が同じため。
3-1.AがNullPointerExceptionになる。