<分区>
Possible Duplicate:
When we have wrappers classes, why primitives are supported?
如果有使Java成为纯面向对象语言的Wrapper类,那为什么会有可以在Java中使用的Primitive数据类型呢???
<分区>
Possible Duplicate:
When we have wrappers classes, why primitives are supported?
如果有使Java成为纯面向对象语言的Wrapper类,那为什么会有可以在Java中使用的Primitive数据类型呢???
最佳答案
为了效率。原始类型的变量直接包含值;非基本类型的变量是引用,指的是存储在内存中其他地方的对象。
每次需要使用包装器类型的值时,JVM 都需要在内存中查找对象以获取该值。基本类型不需要这样做,因为变量包含值本身,而不是对包含该值的对象的引用。
但是,这并不能解释为什么原始类型需要在 Java 编程语言中显式可见。 Java 语言和 JVM 的设计者本可以选择对语言本身隐藏原始类型,这样您就可以将所有内容都视为一个对象;然后,编译器可以在幕后将其转换为更高效的原始类型。
一些在 JVM 上运行的较新的编程语言(Groovy、Scala 和其他语言)可以让你做到这一点:在语言本身中,一切看起来都像一个对象,例如你可以调用对象的方法,但下面是编译器将它们翻译成原语。
我猜想在开发 Java 语言的时候(在 1990 年代上半叶)人们没有想到这一点,现在要对语言进行根本性的改变以允许这样做已经太晚了。
关于java - 为什么Java中有原始数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14477743/