繁体   English   中英

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

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

例如,有没有像int.javadouble.java这样的东西?

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

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

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

不,没有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根据需要在堆栈上为对象或类字段或甚至直接在代码中为它们分配空间。

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

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

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

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

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

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

  1. 原始类型不是写的,JVM是。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM