2010-01-31 7 views
2

Мне нравится знать, почему мы называем пустую строку. Где строки являются объектами в java, а объекты не могут иметь значение null, только ссылки могут быть нулевыми.Почему мы вызываем null String?

Может ли кто-нибудь уточнить это?

ответ

7

Здесь немного путаницы. Я бы ожидал, что «null String» будет ссылкой на String, которая фактически не ссылается на String (т. Е. Она равна нулю). Но this article претендует на «пустую строку» как пустую строку.

По этой причине я пытаюсь говорить о нулевых ссылках, то есть ссылках, которые указывают на ничего вообще, а не на действительный объект. И (чтобы быть ясным) пустые строки. «Нуль String» для меня означает то же, что и нулевая ссылка, но последний термин ясен для меня.

+1

+1 для дифференциации между «пустым» и «пустым» в отношении строк. По моему опыту, распространенное заблуждение. – aperkins

+1

Apache Commons Lang 'StringUtils' делает четкое различие между« пустым »,« пустым »и« пустым »... всеми полезными отличиями. – skaffman

+1

@ skaffman - какая разница между пустым и пустым? –

2

Выражение «пустая строка» просто означает ссылку типа «строка», которая не ссылается ни на что (т. Е. «Null»). Это фраза, которая обычно используется, но не совсем корректна, как вы указываете.

Это просто более простой способ выразить концепцию в случайном разговоре, ничего другого.

0

Вы можете увидеть его таким образом:

  • Объекты являются экземплярами классов.
  • Ссылка на объект не относится ни к одному объекту, ни к одному объекту.

Вот пример:

String a; // object reference a has the value null 
a = new String("Hello World"); // new object is assigned to reference a. Yes, I 
           // know that the string constructor should be avoided, but 
           // to show the point it is necessary 
String b = a; // object references point to the same object 

Объектов ссылка может быть null и null, если нет объекта, назначенного ему. Если вы вызываете такой объект, бросается NullPointerException.

Я предполагаю, что вы исходите из C++. Объект Java ссылается на него скорее как на указатель C++, так как он имеет нулевое значение, но безопасным способом.

0

Для меня, пустой строка а является String что null:

String NULL = null; 

И это очень отличается от пустой строки:

String EMPTY = ""; 

Даже если многие источники (Wikipedia, Encyclopedia.com, Answers.com, чтобы процитировать их), считают, что nu ll строка и пустая строка - это то же самое.

1

JLS определяет пустые строки и нулевой литерал, а также нулевую ссылку.

Если автор вводит нулевые строки, он должен определить, что именно означает пустая строка.

Смежные вопросы