我读到一本书(Bruce Eckel 的 Thinking in Java,第 4 版,第 47 页null
)等于'\u000'
. 然后我想知道到底是'\u000'
什么意思。
根据我的理解, null 是什么都没有或什么都没有。并且'\u000'
与这个定义相矛盾。
谁能澄清这个关于null
and 的问题'\u000'
?
语言规范是定义 null 的地方,它说
还有一种特殊的 null 类型,即表达式 null 的类型,它没有名称。因为 null 类型没有名字,所以不可能声明一个 null 类型的变量或强制转换为 null 类型。空引用是空类型表达式的唯一可能值。空引用始终可以转换为任何引用类型。在实践中,程序员可以忽略 null 类型,只是假装 null 只是一个可以是任何引用类型的特殊文字。--链接到文档(第 4.1 节)
和
null 类型有一个值,即 null 引用,由文字 null 表示,它由 ASCII 字符组成。空文字始终是空类型。--链接到文档(第 2.3 节)
而是一个听起来很循环的定义,但值null
是空引用本身 - 只是另一个指针。空引用的值并不真正相关,可能取决于实现者,但可能是零或其他不能与另一个对象地址混淆的值。
这里可能会引起混淆,因为有一个名为null 字符的字符值带有 value \u0000
。这是 char 类型的默认值。
\u000
null
将是具有 ASCII 代码 0 的字符的 unicode 表示,但与Java 使用的无关。
'\u0000' 十进制等效值为 00 字符等效值为 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。
null
是一个文字,您可以看到规范
在实践中说您可以简单地假装它“只是一个可以是任何引用类型的特殊文字”。
正如@assylias 所说,您读到的内容肯定不是来自java :)