0
点赞
收藏
分享

微信扫一扫

JVM 数据类型

参考:https://blog.csdn.net/antony1776/article/details/89843145

在jvm中,数据分为原始类型引用类型(Reference)

原始类型

Java虚拟机支持的原始数据类型是数字类型boolean类型和returnAddress 类型。

数字类型:由整数类型浮点类型组成。

整数类型为:

  • byte,其值为8位带符号的二进制补码整数,并且其默认值为零

  • short,其值为16位带符号的二进制补码整数,并且其默认值为零

  • int,其值为32位带符号的二进制补码整数,并且其默认值为零

  • long,其值为64位带符号的二进制补码整数,并且其默认值为零

  • char,其值为16位无符号整数,表示基本多语言平面中的Unicode代码点,并以UTF-16编码,其默认值为空代码点('\u0000')。

浮点类型为:

  • float,其值是float值集的元素,或者(在受支持的情况下)float-extended-exponent值集的元素,其默认值为正零

  • double,其值是双精度值集或受支持的双扩展指数值集的元素,并且其默认值为正零

boolean:该boolean 类型的值真实值true,默认值为false

returnAddress:该returnAddress类型的值是指向Java虚拟机指令的操作码的指针,returnAddress 数据只存在于字节码层面。与数字原始类型不同,该returnAddress类型不对应于任何Java编程语言类型,并且不能由正在运行的程序进行修改。

对于 JVM 来说,程序就是存储在方法区的字节码指令,而 returnAddress 类型的值就是指向特定指令内存地址的指针。

引用类型

让 JVM 能更好的支持于面向对象语言的设计,引用类型的值用来指向内存中分配的类实例(对象)或者数组。JVM 规范中并没有详细规定引用类型的实现细节,比如引用应该通过何种方式去定位、访问堆中的对象,具体的对象访问方式取决于虚拟机的具体实现。

目前主流引用类型的实现方案两种:句柄直接指针

两种方式各有优劣:
句柄:访问的最大好处就是 reference 中存储的是稳定的句柄地址,在对象被移动(比如垃圾回收时,整理内存空间,会移动对象的存储位置)时只会改变句柄中示例数据的指针,而 reference 本身不需要修改。
直接指针:访问的最大好处就是速度更快,节省了一次内存寻址的时间开销。

举报

相关推荐

0 条评论