Java:为什么需要包装器类?

在较高的层次上,我知道我们需要通过使用它们各自的包装类在Java集合中使用它们来“包装”原始数据类型,例如int和char。我想了解Java集合如何在低级询问:“为什么我们需要将原始数据类型包装为对象才能在集合中使用它们?”在此先感谢您的帮助。

回答:

在虚拟机级别,这是因为与引用类型(例如java.lang.Object及其派生类型)相比,原始类型在内存中的表示方式非常不同。例如,Java中的原始int在内存中只有4个字节,而一个对象本身至少占用8个字节,另外还要占用4个字节来引用它。这种设计简单地反映了CPU可以更有效地处理原始类型这一事实。

因此,您的问题“为什么需要包装类型”的一个答案是因为它可以提高性能。

但是对于程序员而言,这种区分会增加一些不希望的认知开销(例如,不能在集合中使用int和float。)实际上,通过隐藏这种区分来进行语言设计是很有可能的-

许多脚本语言都这样做了,并且CLR做到了。从1.5开始,Java也这样做。这是通过让编译器在原始表示形式和对象表示形式(通常称为装箱/拆箱)之间静默插入必要的转换来实现的。

因此,您的问题的另一个答案是“不,我们不需要它”,因为编译器会自动为您执行此操作,并且在某种程度上您可以忘记幕后发生的事情。

以上是 Java:为什么需要包装器类? 的全部内容, 来源链接: utcz.com/qa/405912.html

回到顶部