理解Java中的null和’\ u000’之间的区别

我读了一本书(Bruce Eckel的Thinking in Java,第4版,第47页)null等于'\u000' 。 然后我想知道'\u000'究竟是什么意思。

根据我的理解,null无关紧要或没有任何东西。 并且'\u000'与此定义相矛盾。

任何人都可以澄清这个关于null'\u000'吗?

语言规范是定义null的地方,它说

还有一个特殊的null类型,表达式的类型为null,没有名称。 由于null类型没有名称,因此无法声明null类型的变量或转换为null类型。 空引用是null类型表达式的唯一可能值。 null引用始终可以强制转换为任何引用类型。 实际上,程序员可以忽略null类型,只是假装null只是一个可以是任何引用类型的特殊文字。 – 文档链接(第4.1节)

null类型有一个值,null引用,由文字null表示,由ASCII字符组成。 null文字始终为null类型。 – 文档链接(第2.3节)

而是一个圆形的声音定义,但null的值是空引用本身 – 只是另一个指针。 空引用的值并不是真正相关的,并且可能取决于实现者,但可能是零或某些其他不能与另一个对象地址混淆的值。

这里可能会引起混淆,因为有一个名为null字符的字符值, 值为\u0000 。 这是char类型的默认值。

\u000将是ASCII代码为0的字符的unicode表示,但与Java使用的null无关。

‘\ u0000’十进制等效值为00 Char等效值为NUL。

来自Javadoc中的Character: 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。

null是一个文字,你可以看到规范, 在实践中你可以简单地假装它“只是一个可以是任何引用类型的特殊文字”。

正如@assylias所说,你读的东西肯定不是出自java 🙂