Чем отличаются способы присвоить строку?

111
12 декабря 2020, 00:00

Хотел спросить чем отличается:
String name = "Mike";
от
String name = new String();
или же

String name = new String("Вася");

В 1 случае мы создаём переменную и присваиваем ей значение Mike, Во втором случае создаём объект и присваиваем туда значение Вася, это 2 объявления одинаковых и мы можем это либо так либо так делать?

Answer 1

В первом случае вы объявляете ссылочную переменную строкового типа и присваиваете ей ссылку на литерал в пуле констант. Во втором случае вы вызываете конструктор String, передавая ему ссылку на литерал, конструктор создаёт объект, инициализирует в нём поле, содержащее массив символов, и копирует в этот массив символы из литерала. Возвращённая конструктором ссылка присваивается переменной name. В обоих случаях в переменной name оказывается ссылка на строку, но во втором виртуальной машине придётся выполнить больше операций и использовать больше памяти, так как один экземпляр строки будет хранится в пуле констант, а второй в куче.

READ ALSO
проблема с калькулятором на java [дубликат]

проблема с калькулятором на java [дубликат]

Хотел бы к вам обратиться с проблемой с моим калькулятором на java Вот сам код:

98
Как реализовать авто прокрутку в Horizontal Scroll View

Как реализовать авто прокрутку в Horizontal Scroll View

Например: У меня есть 10 ImageView которые находятся в LinearLayout который находится в Horizontal Scroll ViewЯ хочу чтобы каждые 2-3 секунды они автоматом прокручивались...

119
equals string в циклах java [закрыт]

equals string в циклах java [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

97
Java и web-приложение [закрыт]

Java и web-приложение [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах

85