java - 为什么Java中有原始数据类型?

标签 java types 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/

相关文章:

java - 这是原始包装类的正确用法吗?

java - 获取有关 Maven 依赖项的信息

java - 如何正确使用toString方法?

java - 在 Javadoc 中应该使用哪个标签作为段落分隔符?

c++ - 我应该使用哪个数组/列表?

javascript - 构造函数可以返回原语吗?

c# - XML 序列化 : The type of the argument object 'Sw' is not primitive

java - 如何在 JBOSS EAP6.4 的自定义模块后使用 Spring Boot 应用程序使用自定义 module.xml 并进行部署

scala - 为什么在Scala中类型检查和类型转换被认为是较差的样式?

javascript - 让 TypeScript 明白对象属性不能被取消定义?