java defined/written 中的原始数据类型如何?

How are the primitive data types in java defined/written?

例如,是否有int.javadouble.java

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

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

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

所以,int, double 不是java中的class。那些是 keyword。以及用母语(我相信c,C++)编写的那些关键字的定义。

1) What language are primitive data types in java written in?

-> 我相信那些是写 n C/C++;

2) Can one access those files and see how primitive data types such as int are defined?

-> 没有 .java 您可以找到的文件。

原始数据类型在 Java 语言规范中定义。这意味着任何满足规范的 JVM 都将以相同的方式处理它们,无论 JVM 是用哪种语言编写的。所以,

  1. 原始类型没写,JVM写了。

  2. 如果 JVM 是开源的,您可以访问实现指定行为的文件。

不,没有 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 classes 的另一个原因是他们不有自己的方法,你可以调用,例如用点符号。当您确实将原始类型用作对象时,会发生转换(称为自动装箱——https://en.wikipedia.org/wiki/Object_type_(object-oriented_programming)#Autoboxing),其中原始类型被转换为一种包装类型,这对程序员来说是透明的。值得一看这些 classes 的源代码,以获得一些有趣的内部功能。

此外,您不能使用 new 关键字创建它们的实例。编译器或 VM 根据需要在堆栈上为它们分配 space 作为对象或 class 字段,甚至直接在代码中。