为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在Java中原始数据类型不能为“ null”?

为什么在Java中原始数据类型不能为“ null”?

森林海 2019-11-19 10:27:08
声明任何原始类型的数据(例如int或)时,double它们会初始化为0或0.0。为什么我们不能将它们设置为null?
查看完整描述

3 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

基本类型就是数据。另一方面,我们所谓的对象只是指向数据存储位置的指针。例如:


Integer object = new Integer(3);

int number = 3;

在这种情况下,object它只是指向值恰好为3的Integer对象的指针。也就是说,在存储变量对象的内存位置,您所拥有的只是对数据实际位置的引用。number另一方面,存储的存储位置直接包含值3。


因此,您可以将设置object为null,但这仅表示该对象的数据为null(即未分配)。您不能将int设置为null,因为该语言会将其解释为值0。


希望有帮助!


查看完整回答
反对 回复 2019-11-19
?
Helenr

TA贡献1780条经验 获得超4个赞

因为Java中的原始数据类型不是Objects。您始终可以使用包装器类之一来创建一个Object。八个原始数据类型中的每一个都有其对应的包装器:


字节: java.lang.Byte

短: java.lang.Short

整数: java.lang.Integer

长: java.lang.Long

浮动: java.lang.Float

双: java.lang.Double

布尔值: java.lang.Boolean

烧焦 java.lang.Character

如果您对整个结构感兴趣,则可以从此处开始(原始数据类型)。


查看完整回答
反对 回复 2019-11-19
?
aluckdog

TA贡献1847条经验 获得超7个赞

对象比基本方法涉及更多的开销。以下测试显示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());

这就是.net实现可空基元的原因,不幸的是Java没有可空基元。


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 1103 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信