Мне задали этот вопрос:
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*
На основании вышеприведенных деталей, сколько объектов String и сколько ссылочных переменных было создано до оператора println приведенного ниже кода?
String s1 = "spring ";
String s2 = s1 + "summer ";
s1.concat("fall ");
s2.concat(s1);
s1 += "winter ";
System.out.println(s1 + " " + s2);
Мой ответ был
Результатом этого фрагмента кода является весна зима весна лето
Есть две ссылочные переменные, s1 и s2. Всего было восемь объектов String
создается следующим образом: «весна», «лето» (потеряно), «весна лето», «осень» (потеряно), «весна»
осень "(потерян)," весна лето весна "(потерян)," зима "(потеря)," весна зима "(в этот момент" весна "потеряна).
В этом процессе не теряются только два из восьми объектов String.
Это правильно?