【问题标题】:What is difference between Vector and Linked List? [duplicate]向量和链表有什么区别? [复制]
【发布时间】:2014-05-06 10:04:14
【问题描述】:

为什么在 Java 中的其他所有内容都是 Object 时支持 Primitives 数据类型。尽管 Java 确实提供了所有原始数据类型的 Wrapper 类

【问题讨论】:

  • 在没有公认的“100% 面向对象”定义的情况下,这不是一个真正的问题,并且“主要基于意见”。

标签: java


【解决方案1】:

我们使用原语是因为它们速度很快。 这是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()== 相比相当冗长)

对于 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

【讨论】:

  • 我会质疑对象 == 是否丢失。它只是意味着与equals() 不同的东西;绝对和忠实地同一个对象。我不经常使用它,但我不希望它从语言中删除
  • Integer.valueOf(5) == Integer.valueOf(5) true 和 Integer.valueOf(500) == Integer.valueOf(500) false 如何?
  • @Moak Integer.valueOf() 提供该值的 Integer,而不是 int'. However it caches small values so it truely is the same Integer`
  • +1 @Richard,让我更清楚地了解范围。整数类缓存 -128 到 127 范围内的值。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    另一种解释,取自here

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

    使用 new 创建对象效率不高,因为 new 会 将对象放在堆上。这种方法对 小而简单的变量。而不是使用 new 创建变量, Java 可以使用原始类型来创建自动变量 不是参考。变量保存值,它位于 堆栈,因此效率更高

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 2021-04-23
      • 2016-06-13
      • 2016-06-03
      • 1970-01-01
      • 2016-11-13
      • 2015-11-23
      • 2013-02-13
      • 2011-04-26
      相关资源
      最近更新 更多