有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

例如,是否存在int.java双精度。java

由于基本数据类型是Java语言的构建块,我认为它们应该用一些较低级别的语言编写

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

  2. 可以访问这些文件并查看int等基本数据类型是如何定义的吗


共 (3) 个答案

  1. # 1 楼答案

    不,没有int.java或double这样的东西。JAVA 这些低级类型是在JVM级别硬编码的。即使在字节码级别,它们也是基本类型(例如,不同的字节码适用于4字节的操作数,而不是8字节的操作数,或者适用于整数类型,而不是浮点类型)。您可能想研究一个或多个开源Java虚拟机的实现,以了解它们是如何处理的(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关键字创建它们的实例。编译器或虚拟机根据需要在堆栈上、作为对象或类字段,甚至直接在代码中为它们分配空间

  2. # 2 楼答案

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

    1. 原语类型没有编写,JVM是

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

  3. # 3 楼答案

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

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

    ->;我相信这些都是用C/C++编写的

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

    ->;你找不到这个文件