51

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

根据我的理解, null 是什么都没有或什么都没有。并且'\u000'与这个定义相矛盾。

谁能澄清这个关于nulland 的问题'\u000'

4

4 回答 4

26

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

还有一种特殊的 null 类型,即表达式 null 的类型,它没有名称。因为 null 类型没有名字,所以不可能声明一个 null 类型的变量或强制转换为 null 类型。空引用是空类型表达式的唯一可能值。空引用始终可以转换为任何引用类型。在实践中,程序员可以忽略 null 类型,只是假装 null 只是一个可以是任何引用类型的特殊文字。--链接到文档(第 4.1 节)

null 类型有一个值,即 null 引用,由文字 null 表示,它由 ASCII 字符组成。空文字始终是空类型。--链接到文档(第 2.3 节)

而是一个听起来很循环的定义,但值null空引用本身 - 只是另一个指针。空引用的值并不真正相关,可能取决于实现者,但可能是零或其他不能与另一个对象地址混淆的值。

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

于 2012-08-30T11:23:20.870 回答
15

\u000null将是具有 ASCII 代码 0 的字符的 unicode 表示,但与Java 使用的无关。

于 2012-08-30T11:18:56.923 回答
10

'\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。

于 2012-08-30T11:24:52.397 回答
1

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

正如@assylias 所说,您读到的内容肯定不是来自java :)

于 2012-08-30T11:17:12.057 回答