я задал этот вопрос:Как Java обрабатывает объекты String в памяти?
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 s1 = "spring ";
String s2 = s1 + "summer ";
s1.concat("fall ");
s2.concat(s1);
s1 += "winter ";
System.out.println(s1 + " " + s2);
Мой ответ был Результат этого фрагмента кода весна зима весна лето
Есть две опорные переменные s1 и s2. Всего было создано восемь струнных объектов : «весна», «лето» (потеряно), «весеннее лето», «падение» (потеряно), «весна осень» (потеряна), «весенняя летняя весна», (потеряно), «зима» (потеряна), «весенняя зима» (в этот момент теряется «весна»).
В этом процессе не теряются только два из восьми объектов String.
Верно ли это?
Что-то интересное: http://stackoverflow.com/questions/7663252/java-string-concat-in-stringbuilder-call/ Обратите внимание, что мой ответ на этот вопрос был неправильным ... – Gevorg