java中的原始数据类型是如何定义/编写的?

aba*_*awi 5 java computer-science primitive-types data-structures

例如,是否有int.javadouble.java 之类的东西?

由于原始数据类型是 Java 语言的构建块,我假设它们会用某种较低级别的语言编写。

  1. Java 中的原始数据类型是用什么语言编写的?

  2. 可以访问这些文件并查看原始数据类型(如 int)是如何定义的吗?

mem*_*emo 2

不,不存在 int.java 或 double.java 这些低级类型在 JVM 级别进行硬编码。即使在字节码级别,它们也是原始类型(例如,不同的字节码适用于 4 字节而不是 8 字节的操作数,或者适用于整型而不是浮点类型)。您可能想要研究一个或多个开源 Java VM 的实现,以了解它们是如何处理的 ( https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#Free_and_open_source_implementations )。此外,甚至编译器也会特殊对待它们并对它们做出某些假设,例如出于优化目的。

它们没有等效的 Java 类(与大写的 java.lang.Integer、java.lang.Double 等不同)的另一个原因是它们没有自己的方法,您可以调用这些方法,例如点符号。当您使用原始类型作为对象时,会发生转换(称为自动装箱 - https://en.wikipedia.org/wiki/Object_type_(object-oriented_programming)#Autoboxing),其中原始类型被转换为一个包装器类型,对程序员来说是透明的。值得一看这些类的源代码,了解一些有趣的内部功能。

您也不能使用new关键字创建它们的实例。编译器或虚拟机根据需要在堆栈上、作为对象或类字段、甚至直接在代码中为它们分配空间。