Мне задали этот вопрос:
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.
Это правильно?