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