java虚拟机的数据类型

本文详细介绍了Java虚拟机(JVM)中的数据类型,包括原始类型(如byte, short, int, long, float, double, boolean以及returnAddress)及其默认值,特别是浮点类型和returnAddress类型的值。此外,还阐述了引用类型,包括类类型、数组类型和接口类型,以及它们的默认值null。" 122483847,10273459,Git初学者指南:安装与使用教程,"['git', 'github']

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

数据类型

java虚拟机操作的数据类型可以分为两类:原始类型(primitive type也叫原生类型或基本类型)和引用类型(reference type),与之对应的也存在原始值引用值

原始类型和值

Java虚拟机所支持的原始数据类型包括数值类型boolean类型returnAddress类型

  • 数值类型
    • 整数类型(默认值为0)
    1. byte类型:值为8位有符号二进制补码整数
    2. short类型:16位
    3. int类型:32位
    4. long类型:64位
    5. char类型:值为使用16位无符号整数表示的、指向基本多文种平面(Basic MultilingualPlane,BMP)的Unicode码点,以UTF-16编码,默认值为Unicode的null码点(’\u0000’)
    • 浮点类型
    1. float类型:值为单精度浮点数集合中的元素,或者是单精度扩展指数集合中的元素,默认为正数0
    2. double类型:值为双精度浮点数集合中的元素,或者是双精度扩展指数集合中的元素,默认为正数0
  • boolean类型:值为true和false,默认为false
  • returnAddress类型:该类型是指向某个操作码(opcode)的指针,此操作码与虚拟机指令相对应。
    在虚拟机支持的所有原始类型中只有returnAddress类型不能与Java语言的数据类型相对应。

浮点类型、取值集合及浮点值

所有Java虚拟机实现必须支持两种标准的浮点值集合:单精度浮点数集合双精度浮点数集合。可以自由选择是否支持单精度扩展指数集合双精度扩展指数集合
任意一个非零的、可数的任意浮点值都可以表示为 s × m × 2 e − N + 1 s\times m\times {2}^{e-N+1} s×m×2eN+1的形式,其中 s s s可以是+1或者-1, m m m是一个小于 2 N 2^N 2N的正整数, e e e是一个介于 E m i n = − ( 2 K − 1 − 2 ) E_{min}=-(2^{K-1}-2) Emin=(2K12) E m a x = ( 2 K − 1 − 1 ) E_{max}=(2^{K-1}-1) Emax=(2K11)之间的整数(包括 E m i n E_{min} Emin E m a x E_{max} Emax),这里N和K的取值取决于当前采用的浮点数值集合。

参数单精度浮点数集合单精度扩展指数集合双精度浮点数集合双精度扩展指数集合
N N N 24 24 24 24 24 24 53 53 53 53 53 53
K K K 8 8 8 ≥ 11 \geq11 11 11 11 11 ≥ 15 \geq15 15
E m a x E_{max} Emax + 127 +127 +127 ≥ + 1023 \geq+1023 +1023 ≥ + 1023 \geq+1023 +1023 ≥ + 16383 \geq+16383 +16383
E m i n E_{min} Emin − 126 -126 126 ≤ − 1022 \leq-1022 1022 − 1022 -1022 1022 ≤ − 16382 \leq-16382 16382

returnAddress类型和值

returnAddress类型的值会指向一条虚拟机指令的操作码。该类型和数值类的原生类型不同,java中并不存在与之对应的类型,而且也不能在程序运行时修改。

boolean类型

虽然jvm中定义了该类型,不过并没有提供专用的字节码指令,在java中使用的boolean值都会在编译后,使用jvm的int数据类型来代替,在oracle公司的jvm实现里,java中的boolean数组会被编译成byte数组,jvm会ture映射为1,而false映射成0。

引用类型和值

jvm中有3中引用类型:类类型(class type)数组类型(array type)以及接口类型(interface type),这些引用类型的值分别指向动态创建的类实例数组实例实现了某个接口的类实例或数组实例

  • 数组类型最外面一层叫做该数组类型的组件类型,一个数组的组件类型也可以是数组。
  • 引用类型的默认值null,当一个引用不指向任何对象时,它的值就用null来表示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值