Во-первых, извиняюсь, если это очень простой вопрос, мне просто любопытно узнать разницу между следующими определениями строк
String x= "hello";
String y = new String("hello");
Я знал, что в java String - это класс, это не примитив и не Обертка (поправьте меня, если это заблуждение). Рассмотрим класс A, до сих пор я видел следующие объявления для любого класса. Я думаю, что A c;
действителен, и A a = new A ();
также действителен. Меня смущает A a = "xyz";
именно так мы объявили String, как в первом типе определения выше. Я уверен, что два приведенных выше определения абсолютно разные, например, если я скажу x == y
, он вернет false. Я понимаю, что y - это ссылка на объект String. Что там x, как он хранится в памяти? Интересно, что я обнаружил, что и x, и y могут получить доступ ко всем методам класса String.
Тогда в чем преимущество одного перед другим. Могу ли я узнать применимость каждого из них.