use*_*432 5 java primitive types
可能重复:
当我们有包装类时,为什么支持原语?
如果存在使Java纯面向对象语言的Wrapper类,那么为什么有可以在Java中使用的Primitive数据类型???
Jes*_*per 20
为了效率.原始类型的变量直接包含值; 非原始类型的变量是引用,指的是存储在内存中其他位置的对象.
每次需要使用包装器类型的值时,JVM都需要在内存中查找对象以获取该值.原始类型不需要这样,因为变量包含值本身,而不是对包含该值的对象的引用.
但是,这并不能解释为什么原始类型需要在Java编程语言中明确可见.Java语言和JVM的设计者可以选择隐藏语言本身的原始类型,以便您可以将所有内容视为对象; 然后编译器可以将它翻译成更有效的原始类型.
一些在JVM上运行的新编程语言(Groovy,Scala和其他语言)可以让你做到这一点:在语言本身中,所有东西看起来都像一个对象,你可以在其上调用方法,但是编译器将它们转换为原语.
我想在Java语言开发的时候(1990年代上半期),人们并没有想到这一点,现在为了允许这种语言的彻底改变为时已晚.
存在原始数据类型的主要原因是,创建对象、分配堆成本太高,并且会降低性能。正如您可能知道最常用的原始数据类型,如 int、float 等,因此将它们作为对象会极大地影响性能。因此 Java 设计者认为最好将其设为非对象。是的,如果您准备在性能上妥协一点,但您需要更多的 OOP 工具,则存在包装器。因此,在这种情况下,您可以使用包装器。希望这些信息对您有所帮助。