Разница в инициализации строки

Во-первых, извиняюсь, если это очень простой вопрос, мне просто любопытно узнать разницу между следующими определениями строк

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.

Тогда в чем преимущество одного перед другим. Могу ли я узнать применимость каждого из них.

5
задан srk 4 March 2012 в 13:05
поделиться