提问人:Jim W. Moch 提问时间:10/16/2023 最后编辑:Mark RotteveelJim W. Moch 更新时间:10/17/2023 访问量:87
NULL 作为第八种“基元”数据类型 [closed]
NULL as an eighth 'primitive' data type [closed]
问:
由 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
答:
7赞
Stephen C
10/16/2023
#1
根据 JLS 4.1,实际上有一种类型。null
“还有一种特殊的 null 类型,即表达式 null 的类型(§3.10.8、§15.8.1),它没有名称。”- JLS4.1
所以。
null
是 Java 语言保留的文字。null
表示值而不是类型。的类型无法命名。因此,你这样做的尝试失败了。
null
(我什至不认为 null 类型有反射表示......
java.lang.Class
JLS 表示 的类型既不是基元类型也不是引用类型。
null
各种上下文允许转换为任何引用类型的 null 值;例如:
null
“最后,可以将 null 类型的值(null 引用是唯一的此类值)分配给任何引用类型,从而产生该类型的 null 引用。”- JLS5.2
我想他们选择以这种方式指定 null 类型是有某种技术原因的。也许这会使规范的其他部分更简单。我不知道。除非你是黑带类型的理论家,否则为什么的问题很可能是无关紧要的。
...它满足的原始数据类型和数字值之间的差异?
我无法理解你问题的那部分。
正如评论中提到的,只是一个普通的标识符。Java 类库不会声明具有该名称的类,因此您很可能会收到未解决的符号错误。您可以为自己声明一个,但就 Java 编译器或运行时而言,该类不会(也不能)表示 null 类型。NULL
NULL
评论
1赞
Holger
10/16/2023
你的假设是正确的。null 类型没有表示形式,并且由于无法调用引用,因此不会错过它。java.lang.Class
getClass()
null
上一个:C# 模拟鼠标输入
评论
NULL
NULL
String
NULL
String
boolean
byte
short
char
int
long
float
double