String型

以下の3つのjava.lang.String型のオブジェクトがあるとき、
trueを表示するコードをすべて選択してください。

String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");

A.  System.out.println(str1 == str2);
B.  System.out.println(str1 == str3);
C.  System.out.println(str1.equals(str2));
D.  System.out.println(str2.equals(str3));

==はオブジェクトが同一かどうか。equalsメソッドは値が同じかどうか。
Aは同じオブジェクトなのでtrue
Bはオブジェクトが違うからfalse
Cは文字列が同じなのでtrue
Dも文字列が同じなのでtrue

実行してみる


true
false
true
true
合ってた…。

char型の配列を使ってみる
char[] str = {'a','b','c'};
System.out.println(str1.equals(str));

実行結果


false
何故?
あとで考えよう。あとでやろう。あとでよもう。あとで