3 回答

TA贡献1818条经验 获得超8个赞
基本类型就是数据。另一方面,我们所谓的对象只是指向数据存储位置的指针。例如:
Integer object = new Integer(3);
int number = 3;
在这种情况下,object它只是指向值恰好为3的Integer对象的指针。也就是说,在存储变量对象的内存位置,您所拥有的只是对数据实际位置的引用。number另一方面,存储的存储位置直接包含值3。
因此,您可以将设置object为null,但这仅表示该对象的数据为null(即未分配)。您不能将int设置为null,因为该语言会将其解释为值0。
希望有帮助!

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
如果您对整个结构感兴趣,则可以从此处开始(原始数据类型)。

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没有可空基元。
添加回答
举报