Ключевое отличие в том, как и где эти объекты String создаются в памяти:
Когда ты пишешь String s = "Temporary", Java создает один объект String в String pool. Если потом создашь ещё одну переменную с тем же значением (String s2 = "Temporary"), она ссылается на тот же объект в pool, а не создаёт дубликат.
Когда ты пишешь String s = new String("Temporary"), Java выполняет следующие шаги:
new String()Каждый следующий вызов (String s2 = new String("Temporary")) создаёт дополнительный объект String в heap, впустую расходуя память.
String s = "Temporary" — это предпочтительный и более эффективный подход, потому что он:
Используй подход с конструктором только тогда, когда тебе явно нужен новый объект String, независимый от String pool, что в типичных приложениях требуется редко.
Когда ты используешь String s = new String("Temporary"), Java создаёт ровно два объекта String: один в String pool и один в heap памяти.
Новый — ещё не проверен сообществом
Вы