我在一本书中读到( Bruce用Java思考,第4版,第47页),null
等于'\u000'
。然后我想知道'\u000'
到底是什么意思。
根据我的理解,null不是什么也不是什么都没有。'\u000'
与这一定义相矛盾。
有人能澄清关于null
和'\u000'
的这个问题吗?
发布于 2012-08-30 11:23:20
语言规范是定义null的地方,它说
还有一个特殊的空类型,即表达式null的类型,它没有名称。因为空类型没有名称,所以不可能声明空类型的变量或转换为空类型。空引用是空类型表达式的唯一可能值。空引用始终可以转换为任何引用类型。在实践中,程序员可以忽略空类型,而只是假装null只是一个特殊的文字,可以是任何引用类型。http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html
和
空类型有一个值,即空引用,由由ASCII字符组成的文字null表示。空文字总是为空类型。http://docs.oracle.com/javase/specs/jvms/se5.0/html/Concepts.doc.html
相反,这是一个循环的定义,但是null
的值是空引用本身--只是另一个指针。空引用的值并不是真正相关的,大概取决于实现者,但是零值或其他一些不能与另一个对象地址混淆的值是可能的。
这里可能会引起混淆,因为有一个名为空字符和值\u0000
的字符值。这是char类型的默认值。
发布于 2012-08-30 11:18:56
\u000
将是使用ASCII代码0的字符的unicode表示,但与Java使用的null
无关。
发布于 2012-08-30 11:24:52
'\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 )。
https://stackoverflow.com/questions/12195628
复制相似问题