2010-10-04 4 views
1

Возможные Дублировать:
How to know how many objects will be created with the following code?Сколько объектов создаются здесь - Java

Я следующие строки кода в программе

String str1 = "abc"; 
String str2 = str1; 
String str3 = "abc"; 

Я хочу знать, как многие объекты создаются, когда выполняется над 3 строками кода.

+0

@Bragboy - Нет дубликатов, все строковые литералы там разные (или новые), здесь они одинаковы. – Ishtar

ответ

3

Все три ссылки относятся к тому же интернированному объекту String.

-1

3 объекта, но все они используют одну и ту же интернированную строку (т. Е. Строка существует только один раз в запущенной JVM).

+0

Ваш ответ противоречит самому себе. Либо будет один объект (правильный), либо три (неверный). Это не может быть и то, и другое. –

+0

3? Что вы имеете в виду с объектом? 'str2' явно является только ссылкой. – Ishtar

+0

Итак, я считаю, что правильный ответ заключается в том, что здесь создается только 1 объект. Я прав? – tek3

2

Создан только один объект. Остальные (str2, str3) относятся к внутреннему пулу строк.

3

2, 1 строковый объект и строка содержит 1 массив символов.

+0

Хороший улов. Массив - это объект, поэтому он (либо) 2 (или 0, если «abc» уже был интернирован в запущенном jvm, см. [Codaddicts answer] (http://stackoverflow.com/questions/3854553/how-many -Объекты-являются созданным-здесь-Java/3854604 # 3854604)) –

2

Он может создать 0 или 1 объект.

Если уже существует объект интернационализации String со значением "abc", объекты не создаются, и если его нет, он создается.

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