MBM*_*BMJ 39 java null primitive-types
在声明任何原始类型数据时,int
或者将double
它们初始化为0
或0.0
.我们为什么不设置它们null
?
Miq*_*uel 59
原始类型只是数据.另一方面,我们称之为对象的只是指向数据存储位置的指针.例如:
Integer object = new Integer(3);
int number = 3;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,object
仅仅是一个指向整数对象,其值正好是3.也就是,在其中变量对象存储在内存中的位置,你已经是到数据真的是一个参考.number
另一方面,存储的存储位置直接包含值3.
因此,您可以将其设置object
为null,但这只是意味着该对象的数据为空(即未分配).您不能将int设置为null,因为该语言会将其解释为值0.
希望有所帮助!
对象比基元涉及更多的开销。以下测试显示 int 的执行速度比 Integer 快大约 10 倍。
int n;
EtmPoint point1 = etmMonitor.createPoint("test:objects");
for (n = 0; n < 1000000; n++) {
Integer t = 0;
t = 10;
t = 11;
}
point1.collect();
EtmPoint point = etmMonitor.createPoint("test:primitives");
for (n = 0; n < 1000000; n++) {
int t = 0;
t = 10;
t = 11;
}
point.collect();
etmMonitor.render(new SimpleTextRenderer());
Run Code Online (Sandbox Code Playgroud)
这就是 .net 实现 nullable 原语的原因,不幸的是 java 没有 nullable 原语。