我总是问自己这个问题:为什么Java设计师在他们的语言中引入了原始类型和引用类型。换句话说,为什么会存在两个可以完全实现相同目标的数据类型,例如(int& java.lang.Integer),(float& java.lang.Float)......任何人都可以解释一下这个问题?
答案 0 :(得分:3)
Java有原语,因为:
- 他们很快。 (与对象比较)
- 他们的开销较小。 (与对象比较)
- 他们实际上让拥有C / C ++背景的人的生活更轻松,并给他们相同的感觉(差不多)。
醇>
Java有Wrappers因为:
在某些数据结构中,例如 Collections ,只允许添加对象,因为在进行垃圾收集时,GC 将所有这些东西仅作为对象处理,然后执行操作 在他们身上。
- 醇>
在集合中使用Wrappers(Objects)代替 primitives 更多的是设计选择,因为它允许一般行为 方法。例如,集合上的
equals()
,contains()
就可以了 方法覆盖的基础,无法在原语上完成。
答案 1 :(得分:0)
原语比引用类型更快(在小循环中几乎不会引起注意,但在大型操作中,差异很明显),使c / c ++背景的人的阅读代码更容易,并且通常是更好的,优化的适合基本类型的通用操作。
然而,请考虑Java(Collections,Generics,Reflection ...)的某些部分需要类而不是基本类型,因此为此添加了包装器(加上装箱和拆箱)。另外,包装器是可空的,而基本类型则不是,在某些操作中也可能需要它们。