私はこの質問をされました:
String s = "abc"; // creates one String object and one
// reference variable
In this simple case, "abc" will go in the pool and s will refer to it.
String s = new String("abc"); // creates two objects,
// and one reference variable*
上記の詳細に基づいて、以下のコードのprintlnステートメントの前に作成されたStringオブジェクトと参照変数の数はいくつですか?
String s1 = "spring ";
String s2 = s1 + "summer ";
s1.concat("fall ");
s2.concat(s1);
s1 += "winter ";
System.out.println(s1 + " " + s2);
私の答えは、このコードフラグメントの結果は春冬春夏です
s1とs2の2つの参照変数があります。「春」、「夏」(失われた)、「春夏」、「秋」(失われた)、「春秋」(失われた)、「春夏春」(失われた)の合計8つのStringオブジェクトが作成されました。 )、 "winter"(失われた)、 "spring winter"(この時点で "spring"は失われます)。
このプロセスで失われるのは、8つのStringオブジェクトのうち2つだけです。
それが正しいか?