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

时间:2018-07-30 12:52:47

标签: java data-structures computer-science primitive-types

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

由于原始数据类型是Java语言的构建块,因此我认为它们将以某种较低级的语言编写。

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

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

3 个答案:

答案 0 :(得分: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类,java.lang.Integer,java.lang.Double等)是因为它们没有自己的方法,可以调用它们,例如点符号。当您确实将基本类型用作对象时,将发生转换(称为自动装箱-https://en.wikipedia.org/wiki/Object_type_(object-oriented_programming)#Autoboxing),在该转换中,对于程序员而言,该基本类型将转换为包装类型之一。值得一看这些类的源代码,以获得一些有趣的内部功能。

此外,您无法使用new关键字来创建它们的实例。必要时,编译器或VM在堆栈上,作为对象或类字段甚至直接在代码中为它们分配空间。

答案 1 :(得分:1)

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

  

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

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

  

2)是否可以访问这些文件,并查看原始数据类型(例如   是否定义了int?

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

答案 2 :(得分:1)

原始数据类型在Java语言规范中定义。这意味着,无论使用哪种语言编写,满足该规范的所有JVM都将对其进行相同的处理。所以,

  1. 原始类型不被写入,JVM被写入。

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