-3 java javac primitive-types java-8
由 Java 鲜为人知的数据类型“null”引起的无意识查询。
有人能够澄清“null”是否是 Java 语言保留的文字,以及它作为原始数据类型和数字值之间的差异吗?
NULL default_object_value; // a Syntax error
NULL acct_balance_at_westbank = null; // Another Syntax error
String aStrokeOfLuck = null; // a feasible variable declaration & assignment
Run Code Online (Sandbox Code Playgroud)
根据 JLS 4.1,实际上有一种null.
\n\n“还有一种特殊的 null 类型,即表达式 null (\xc2\xa73.10.8, \xc2\xa715.8.1) 的类型,它没有名称。” - JLS 4.1
\n
所以。
\nnull是 Java 语言保留的文字。
null表示值而不是类型。
的类型null无法命名。因此你的尝试失败了。
(我什至不认为java.lang.Class空类型有反射表示......)
JLS 表示 的类型既不null是原始类型也不是引用类型。
各种上下文允许null转换为任何引用类型的空值;例如
\n\n“最后,空类型的值(空引用是唯一这样的值)可以分配给任何引用类型,从而产生该类型的空引用。” - JLS 5.2
\n
我想他们选择这种方式指定 null 类型是有一些技术原因的。也许这会使规范的其他部分变得更简单。我不知道。除非你是黑带型理论家,否则“为什么”问题很可能是无关紧要的。
\n\n\n...它满足原始数据类型和数字值之间的差异?
\n
我无法理解你问题的这一部分。
\n正如评论中提到的,NULL只是一个普通的标识符。Java 类库不会声明具有该名称的类,因此您很可能会遇到未解决的符号错误。您可以为自己声明一个类,但NULL就 Java 编译器或运行时而言,该类不会(也不能)表示 null 类型。