了解 Java 中 null 和'\u000' 之间的区别

2022-08-31 19:57:45

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

根据我的理解,null是没有或没有任何东西。并且与这个定义相矛盾。'\u000'

任何人都可以澄清这个问题 和 ?null'\u000'


答案 1

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

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

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

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

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


答案 2

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