Хотел спросить чем отличается:
String name = "Mike";
от
String name = new String();
или же
String name = new String("Вася");
В 1 случае мы создаём переменную и присваиваем ей значение Mike,
Во втором случае создаём объект и присваиваем туда значение Вася, это 2 объявления одинаковых и мы можем это либо так либо так делать?
В первом случае вы объявляете ссылочную переменную строкового типа и присваиваете ей ссылку на литерал в пуле констант. Во втором случае вы вызываете конструктор String, передавая ему ссылку на литерал, конструктор создаёт объект, инициализирует в нём поле, содержащее массив символов, и копирует в этот массив символы из литерала. Возвращённая конструктором ссылка присваивается переменной name. В обоих случаях в переменной name оказывается ссылка на строку, но во втором виртуальной машине придётся выполнить больше операций и использовать больше памяти, так как один экземпляр строки будет хранится в пуле констант, а второй в куче.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей