Javaの基本応用問題
以下のコードを実行したとき、何が出力されますか? ```java public class StringTest { public static void main(String[] args) { String str1 = new String("Hello"); String str2 = new String("Hello"); String str3 = "Hello"; String str4 = "Hello"; System.out.println(str1 == str2); System.out.println(str3 == str4); System.out.println(str1.equals(str3)); } } ```
A.true, true, true
✗ str1 == str2はfalseです。newキーワードで作成された異なるStringオブジェクトは異なるメモリ参照を持つためです。
B.false, true, false
✗ str1 == str2はfalseで、str1.equals(str3)はtrueです。最初の出力が間違っています。
C.false, true, true← 正解
✓ 正解です。str1==str2はfalse(異なるオブジェクト参照)、str3==str4はtrue(文字列プール)、str1.equals(str3)はtrue(値が同じ)です。
D.true, false, true
✗ str1==str2がtrueになることはありません。newで作成された別々のStringオブジェクトだからです。