理解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 🙂