Подтвердить что ты не робот

Понимание разницы между нулем и "\ u000" в Java

Я прочитал в книге ( "Думая на Java" Брюсом Эккелом, 4-е издание, стр. 47), что null равно '\u000'. И тогда мне было интересно, что именно означает '\u000'.

Согласно моему пониманию, ничто не было ничем или отсутствием чего-либо. И '\u000' вступает в противоречие с этим определением.

Может ли кто-нибудь прояснить этот вопрос о null и '\u000'?

4b9b3361

Ответ 1

Спецификация языка - это где null определено, и он говорит

Существует также специальный тип null, тип выражения null, который не имеет имени. Поскольку нулевой тип не имеет имени, невозможно объявить переменную нулевого типа или применить к нулевому типу. Нулевая ссылка - единственное возможное значение выражения нулевого типа. Нулевая ссылка всегда может быть перенесена на любой ссылочный тип. На практике программист может игнорировать нулевой тип и просто притворяться, что null - это просто специальный литерал, который может быть любого ссылочного типа. - Ссылка на документацию (раздел 4.1)

и

Тип null имеет одно значение, нулевую ссылку, представленную буквальным нулем, которая формируется из символов ASCII. Нулевой литерал всегда имеет нулевой тип. - Ссылка на документацию (раздел 2.3)

Скорее определение кругового зондирования, но значение null - это нулевая ссылка - просто другой указатель. Значение нулевой ссылки не имеет особого значения и, по-видимому, зависит от разработчика, но, скорее всего, имеет значение нуль или какое-то другое значение, которое нельзя путать с другим адресом объекта.

Здесь может возникнуть путаница, потому что есть значение символа, называемое символом null со значением \u0000. Это значение по умолчанию для типа char.

Ответ 2

\u000 будет представлять собой уникодное представление символа с кодом ASCII 0, но не имеет ничего общего с null, как используется Java.

Ответ 3

'\ u0000' десятичный эквивалент равен 00 Char эквивалент NUL.

От символа в Javadoc: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Character.html

static char MIN_VALUE 
      The constant value of this field is the smallest value of type char, '\u0000'. 

Это значение unicode, которое в CHAR эквивалентно NULL, т.е. это NULL CHARACTER, а не буквальный NULL.

Ответ 4

null является литералом, и вы можете увидеть спецификацию, которая гласит: на практике вы можете просто притвориться, что это "просто специальный литерал, который может быть любого ссылочного типа".

как @assylias сказал, что вы читали, конечно, не из java:)