向量和链表的区别是什么?



为什么在Java中其他所有东西都是对象的情况下,有对基本数据类型的支持。尽管Java确实提供了所有基本数据类型的Wrapper类

我们使用原语是因为它们很快。为什么人们仍然在Java中使用基本类型?快速参考

在Joshua Bloch的Effective Java中,Item 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()相当冗长)

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 SettingsglowMy Documents>java biziclop
false
false
true
false

因为自动装箱....http://docs.oracle.com/javase/tutorial/java/data/autoboxing.html。你会在那里找到答案的。

另一个解释,摘自这里:

并不是Java中的所有东西都是对象。有一组特殊的数据中经常使用的类型(也称为基本类型)你的编程。出于性能原因,Java的设计者语言决定包含这些基本类型。

使用new创建对象效率不高,因为new会将对象放在堆上。这种方法的成本非常高小而简单的变量。与使用new创建变量不同,Java可以使用基本类型来创建自动变量不引用。变量保存着这个值,它被放在栈,所以效率更高

最新更新