
問題
次のコード断片について正しい説明はどれですか。
public class Main {
public static void main(String[] args) {
String s1 = new String("Duke");
String s2 = s1;
String s3 = s1.intern();
String s4 = "Duke";
if (s1 == s2)
System.out.print("s1 == s2 | ");
if (s1 == s3)
System.out.print("s1 == s3 | ");
if (s1 == s4)
System.out.print("s1 == s4 | ");
if (s2 == s3)
System.out.print("s2 == s3 | ");
if (s2 == s4)
System.out.print("s2 == s4 | ");
if (s3 == s4)
System.out.print("s3 == s4 | ");
}
}
選択肢
A)String オブジェクトは2つ作成され、s1 == s2 | s1== s3 | s2 == s3 | が出力される
B)String オブジェクトは1つだけ作成され、s1 == s2 | s1== s3 | s1 == s4 | s2 == s3 | s2 == s4 | s3 == s4 が出力される
C)String オブジェクトは2つ作成され、s1 == s2 | s1== s3 | が出力される
D)String オブジェクトは4つ作成され、何も出力されない
E)String オブジェクトは2つ作成され、s1 == s2 | s3== s4 | が出力される
F)String オブジェクトは3つ作成され、s1 == s2 | が出力される
解答
A)String オブジェクトは2つ作成され、s1 == s2 | s1== s3 | s2 == s3 | が出力される
B)String オブジェクトは1つだけ作成され、s1 == s2 | s1== s3 | s1 == s4 | s2 == s3 | s2 == s4 | s3 == s4 が出力される
C)String オブジェクトは2つ作成され、s1 == s2 | s1== s3 | が出力される
D)String オブジェクトは4つ作成され、何も出力されない
E)String オブジェクトは2つ作成され、s1 == s2 | s3== s4 | が出力される
F)String オブジェクトは3つ作成され、s1 == s2 | が出力される
解説
public class Main {
public static void main(String[] args) {
String s1 = new String("Duke"); //Stringオブジェクト1つ目
String s2 = s1;
String s3 = s1.intern(); //Stringオブジェクト2つ目
//intern()は、同クラスのメモリ領域に同じ文字列が無いか探しに行くメソッド
//仮に同じ文字列が見つからなければ新たに文字列を生成
String s4 = "Duke";
if (s1 == s2)
System.out.print("s1 == s2 | ");
if (s1 == s3)
System.out.print("s1 == s3 | ");
if (s1 == s4)
System.out.print("s1 == s4 | ");
if (s2 == s3)
System.out.print("s2 == s3 | ");
if (s2 == s4)
System.out.print("s2 == s4 | ");
if (s3 == s4)
System.out.print("s3 == s4 | ");
}
}
対象資格:Java SE17 認定資格