为什么当Java中的其他所有内容都是Object时,支持Primitives数据类型。虽然Java确实提供了所有基元数据类型的Wrapper类
答案 0 :(得分:5)
我们使用原语因为它们很快.. 这里是Why do people still use primitive types in Java?帖子的答案,供快速参考
在Joshua Bloch的 Effective Java 中,第5项:"避免创建不必要的对象",他发布了以下代码示例:
public static void main(String[] args) {
Long sum = 0L; // uses Long, not long
for(long i = 0; i <= Integer.MAX_VALUE; i++) {
sum += i;
}
System.out.println(sum);
}
运行需要43秒。将Long放入原语会使其降至6.8秒......如果这表明我们为什么使用原语。
缺乏原生价值平等也是一个问题(.equals()
与==
相比相当冗长)
for biziclop:
class biziclop {
public static void main(String[] args) {
System.out.println(new Integer(5) == new Integer(5));
System.out.println(new Integer(500) == new Integer(500));
System.out.println(Integer.valueOf(5) == Integer.valueOf(5));
System.out.println(Integer.valueOf(500) == Integer.valueOf(500));
}
}
结果:
C:\Documents and Settings\glow\My Documents>java biziclop
false
false
true
false
答案 1 :(得分:2)
因为自动装箱.... http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html。你会在那里找到答案。
答案 2 :(得分:2)
另一种解释来自here:
并非Java中的所有内容都是对象。有一组特殊的数据 经常使用的类型(也称为基本类型) 你的编程。出于性能原因,Java的设计者 语言决定包括这些原始类型。
使用new isn创建一个对象非常有效,因为新的意愿 将对象放在堆上。这种方法非常昂贵 小而简单的变量。而不是使用new创建变量, Java可以使用原始类型来创建自动变量 不是参考。变量保留了值,并且它放在了 堆叠因此效率更高