矢量和链接列表有什么区别?

时间:2014-05-06 10:04:14

标签: java

为什么当Java中的其他所有内容都是Object时,支持Primitives数据类型。虽然Java确实提供了所有基元数据类型的Wrapper类

3 个答案:

答案 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可以使用原始类型来创建自动变量   不是参考。变量保留了值,并且它放在了   堆叠因此效率更高