2014-10-01 4 views
0

На самом деле я немного смущен тем, сколько объектов создано ниже в разделе «Обработка кода».Сколько объектов создано при создании объекта String

String s=new String("A"); 
s=s+"B"; 

Фактически кто-то сказал, что здесь будут созданы 4 объекта, но в целом обработка, но как не понять.

Пожалуйста, кто может дать мне детальное описание также включена часть памяти таких строк бассейн и т.д.

+4

Это похоже на вопрос о сертификации;) Вы прошли? – vikingsteve

+0

Я предполагаю, что 'String s = new String' является одним,' 'A '' является другим,' 'B '' является одним, а оператор конкатенации '+' будет создавать четвертый –

+0

Не является прямым дубликатом, так как это спрашивает, как создано много «объектов», которые предположительно могут включать в себя «StringBuilder» также в соответствии с комментариями других ниже. – vikingsteve

ответ

2

У вас есть два String литералов объектов, а именно "A" и "B". Затем вы явно создаете экземпляр нового экземпляра «A» с new String("A");. Наконец, четвертый экземпляр создается, когда вы выполняете конкатенацию String. s+"B"

+0

StringBuilder за s + "B"? – TheLostMind

+0

@TheLostMind Либо экземпляр StringBuilder, либо какой-либо другой экземпляр 's +" B "' даст новый экземпляр 'String' (и может создать экземпляр нового' StringBuilder'). Если мы подсчитали массив символов в каждом экземпляре 'String', мы могли бы получить еще больше экземпляров' Object'. –

+0

Возможно, вы правы. В этом случае массив, поддерживающий StringBuilder, также должен подсчитываться, а также длина строки меняет ситуацию. Но 4 * доступно * количество объектов. :П – TheLostMind

6
  • Первого String создал буквальный "A", то есть, если не интернировало ранее.
  • Второй String - это экземпляр, сгенерированный ключевым словом new.
  • Третий литерал "B", опять же, если не интернирован ранее.
  • Последний из них представляет собой конкатенацию s и "B".
+0

Исправить. Стоит отметить, что 'new String()' around '" A "' лишний. – vikingsteve

+0

@vikingsteve совершенно. Я также согласен, что это выглядит как вопрос 1Z0-803, как вы упомянули в комментарии :) – Mena

+0

Также будет создан объект StringBuilder. Всего 5 объектов – TheLostMind

Смежные вопросы