Один создает String в String Constant Pool
String s = "text";
, другой создает строку в пуле констант ("text"
) и другую строку в обычной куче пространство (s
). Обе строки будут иметь то же значение, что и «текст».
String s = new String("text");
s
затем теряется (подходит для GC), если позже не используется.
Строковые литералы, с другой стороны, используются повторно. Если вы используете "text"
в нескольких местах вашего класса, это будет фактически одна и только одна строка (т. Е. Несколько ссылок на одну и ту же строку в пуле).