Java中原始数据类型和引用数据类型的共存

时间:2015-03-05 11:14:29

标签: java types primitive-types

我总是问自己这个问题:为什么Java设计师在他们的语言中引入了原始类型和引用类型。换句话说,为什么会存在两个可以完全实现相同目标的数据类型,例如(int& java.lang.Integer),(float& java.lang.Float)......任何人都可以解释一下这个问题?

2 个答案:

答案 0 :(得分:3)

Java有原语,因为:

  
      
  1. 他们很快。 (与对象比较)
  2.   
  3. 他们的开销较小。 (与对象比较)
  4.   
  5. 他们实际上让拥有C / C ++背景的人的生活更轻松,并给他们相同的感觉(差不多)。
  6.   

Java有Wrappers因为:

  
      
  1. 在某些数据结构中,例如 Collections ,只允许添加对象,因为在进行垃圾收集时,GC   将所有这些东西仅作为对象处理,然后执行操作   在他们身上。

  2.   
  3. 集合中使用Wrappers(Objects)代替 primitives 更多的是设计选择,因为它允许一般行为   方法。例如,集合上的equals()contains()就可以了   方法覆盖的基础,无法在原语上完成。

  4.   

答案 1 :(得分:0)

原语比引用类型更快(在小循环中几乎不会引起注意,但在大型操作中,差异很明显),使c / c ++背景的人的阅读代码更容易,并且通常是更好的,优化的适合基本类型的通用操作。

然而,请考虑Java(Collections,Generics,Reflection ...)的某些部分需要类而不是基本类型,因此为此添加了包装器(加上装箱和拆箱)。另外,包装器是可空的,而基本类型则不是,在某些操作中也可能需要它们。