Java虚拟机的结构(未完待续)

本文介绍了JVM中的数据类型基础知识,包括class文件的格式、基本数据类型(如整型、浮点型、布尔型和返回地址类型)以及引用类型。详细讲解了每种类型的特点及其在JVM中的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在学习JVM结构前我们来了解一些JVM的数据类型基本知识。

一 class文件


在Java虚拟机中执行的被编译的代码是跨平台的二进制字节码。class文件明确的指定了类或者接口的表示格式,包括在特定平台的实现细节。

二 数据类型


和Java编程语言一样,JVM操作两种数据类型,基本数据类型引用类型。所以,相应地就也有两种值(基本值类型和引用值类型)类型存储在变量中,作为参数传递值,函数返回值。
JVM期望在程序运行之前所有的值都进行过类型检查(类型检查是编译器负责,不需要JVM自身对值进行类型检查)。
基本类型的值在运行时是不需要加以标记或者监视来确定值的类型,也不需要和引用类型进行区别。JVM的指令系统使用用来操作特定类型值的指令来区别操作数。
例如,JVM的操作指令iadd , ladd , fadd, dadd指令用来实现两个数字类型的值相加,并且产生数字类型的结果。但是,每一个指令的操作值类型不同,分别对应int , long , float , double类型。

基本数据类型

JVM支持的基本数据类型包括数字类型布尔类型返回地址类型(returnAddress)
数字类型
整型类型
byte(8位有符号) short(16位有符号) int(32位有符号)long(64位有符号) char(16位无符号)char默认值是空字符串(’\u0000’),其它的默认值是0。
浮点型 float double 默认值都是正0

布尔类型包括
包括false/true 默认是false。虽然JVM定义了boolean类型,但是JVM对它的支持还是非常有限的。JVM中没有唯一使用在boolean值上的指令。**在Java编程语言中使用的boolean表达式,在JVM中被编译成int数据类型。**JVM没有直接支持boolean数组,JVM的§newarray指令可以创建boolean数组,同时通过JVM的byte数组指令(§baload, §bastore)来获取和修改boolean数组。在Java编程语言中的boolean数组在JVM中编译为byte数组,每一个boolean数组元素用byte来存储(8位)JVM编码boolean数组使用1代表true,0代表false 。

返回地址类型
返回地址类型是JVM指令操作码的指针,是供JVM指令(§jsr,§ret,§jsr_w)使用的。JVM支持的数据类型除了返回地址类型,其它的都和Java编程语言相对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值