Я не до конца понимаю в чем разница объявления переменной типа String как-нибудь так: String a = "Hello" И вот так: String a = new String("Hello") Я правильно понимаю, что разница в том, что первый пример - это ссылка и мы не можем вносить изменения в значение строковой переменной, а только по сути создаем новый с новой ссылкой, а во втором случае это именно объект, в значение которого вносится изменение? Просто методы класса String работают на оба случая и я не до конца понимаю почему. Буду очень благодарен за ответ!