Разве я не должен делать `String s = new String(“новая строка”);` в Java , даже с автоматическим интернированием строк?

Хорошо, этот вопрос является расширением этого вопроса

Строки Java: "String s = new String("silly"); "

Вышеприведенный вопрос задавал тот же вопрос, что и этот, но у меня есть новый пункт сомнения.

В соответствии с Эффективной Javaи ответами на вопрос выше, мы должны неделать String s = new String("новая строка");, потому что это создаст ненужный объект.

Я не уверен в этом выводе, потому что я думаю, что Java выполняет автоматическое интернирование строк, что означает, что для строки в любом случае существует только одна ее копия в памяти.

Итак, давайте посмотрим String s = new String("новая строка");.

"новая строка"уже является строкой, созданной в памяти.

Когда я делаю String s = new String("новая строка");, тогда sтакже "новая строка". Таким образом, согласно автоматическое интернирование строк, sдолжно указывать на тот же адрес памяти, что и "новая строка", верно?

Тогда как мы можем говорить, что создаем ненужные объекты?

6
задан Community 23 May 2017 в 11:45
поделиться