Как 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*

На основании приведенных выше деталей, сколько объектов 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 не потеряны в этом процессе.

Это правильно?

6
задан Vadzim 25 January 2012 в 07:01
поделиться