Различия между 2 способами инициализации строковой переменной
Существует ли разница между инициализацией переменной text 1 cпособом и 2-ым?
1)String text = "Hello";
2)String text = new String("Hello");
Ответы (1 шт):
Да, существуют.
При первом способе (String text = "Hello") , если строчка "Hello" уже есть в пуле констант, то значение возьмется оттуда. Если такой строчки в пуле нет, то при таком создании она автоматически добавится в пул.
При втором способе (String text = new String("Hello")) будет явно создаваться новая ссылка, не смотря на пул констант. Чтобы явно положить строку в пул при таком создании, используется метод intern
Обычно, используют 1 вариант, чтобы лишний раз не засорять память.
P.S. если уж совсем придираться, то при String text = new String("Hello") сначала строчка Hello возьмется ( если есть) из пула констант, потом уже создаться новая ссылка на text. И вывод text == "Hello" будет false