Java中的原始vs对象类型
这个问题在我脑海中浮现,因为我已经在某处读过Java不是纯粹的面向对象语言,因为它使用的是原语(不是对象)。 我可以同意。 现在我的问题是为什么我们在使用相同类型的Object时使用primitives/wrappers
?
作为一个例子,如果我们考虑Integer
,它与除了对象行为之外的int
具有相同的值限制。 为什么Java仍然在这些条件下使用primitives
?
正如我的观点,如果Java只使用对象类型Autoboxing和Unboxing不需要。 顺便说一下,String也没有原语。
一个原因是由于内存使用。 与至少8个字节的对象相比,诸如int
, float
等的原语需要更少的内存分配(我认为4个字节)。 请参阅以下参考 :
此外,使用原语而不是它们的Object等价物完成了许多算术(数字),这也是它们在Java语言中非常关键的另一个原因。