Строки являются объектами в Java, так почему бы нам не использовать «new» для их создания? - PullRequest
98 голосов
/ 06 января 2010

Обычно мы создаем объекты, используя ключевое слово new, например:

Object obj = new Object();

Строки являются объектами, но мы не используем new для их создания:

String str = "Hello World";

Почему это? Могу ли я сделать строку с new?

Ответы [ 14 ]

0 голосов
/ 06 января 2010

Практически не нужно создавать новую строку, поскольку литерал (символы в кавычках) уже является объектом String, созданным при загрузке класса хоста.Совершенно законно вызывать методы для литерала и дона, главное различие заключается в удобстве литералов.Это было бы большой болью и тратой времени, если бы нам пришлось создавать массив символов и заполнять его char символом, а они создавали новую строку (массив символов).

0 голосов
/ 06 января 2010

Вы все еще можете использовать new String("string"), но было бы сложнее создавать новые строки без строковых литералов ... вам пришлось бы использовать массивы символов или байты :-) У строковых литералов есть одно дополнительное свойство: все те же строковые литералы из любой класс указывает на тот же экземпляр строки (они интернированы).

0 голосов
/ 06 января 2010

Синтаксический сахар.

String s = new String("ABC");

синтаксис все еще доступен.

0 голосов
/ 06 января 2010

Не стесняйтесь создавать новую строку с

String s = new String("I'm a new String");

Обычное обозначение s = "new String"; - более или менее удобный ярлык, который следует использовать из соображений производительности, за исключением тех довольно редких случаев, когда вам действительно нужны строки, удовлетворяющие уравнению

(string1.equals(string2)) && !(string1 == string2)

EDIT

В ответ на комментарий: это было , а не , предназначенное быть советом, а просто прямым ответом на тезис спрашивающих, что мы не используем ключевое слово 'new' для строк, что просто не соответствует действительности. Надеюсь, что это редактирование (в том числе выше) проясняет это немного. Кстати, есть пара хороших и гораздо лучших ответов на поставленный выше вопрос о SO.

...