当我们有包装类时,为什么支持原语?

时间:2010-01-14 10:52:22

标签: java

我们在java中有包装类,比如Interger,Float ..为什么它仍然支持原语,这会阻止java成为完全面向对象的语言?

3 个答案:

答案 0 :(得分:6)

作为对象的包装器被放置在堆中。基元只是“值”并进入堆栈。这样更有效,因为对于堆中的包装基元,您需要(至少)值(在堆栈中)对包装器对象的引用。

这种表现获益是否重要取决于你正在做什么。对于繁重的数字工作,当然,但99%的东西,这是一个烦恼。首先,你不能将原语存储在Collection中;他们得到了自动装箱。因此,存储大量数据的唯一方法是使用普通数组,这反过来会导致其他类型的低效率(例如,如果您需要调整它们的大小)。

答案 1 :(得分:3)

因为原语在内存和CPU处理方面更轻,更有效。

答案 2 :(得分:2)

一个词:表现。

包装器类型也是不可变的,例如,如果想要将一个用于循环计数器,则会使它变得更加昂贵。

JVM还有用于直接对基元进行算术运算的操作码。