JVM|Java的基本数据类型

参考极客时间专栏《深入拆解Java虚拟机》

Java基本数据类型:byte、char、short、int、long、boolean、float、double,支持数值计算。Java引入基本数据类型原因是:工程上考虑,因为基本数据类型能在执行效率、内存两方面提高软件性能。

JVM的boolean
JVM规范中,boolean映射成int类型,true映射为1,false映射为0。JVM规范同时要求Java编译器遵守此编码规则。

java基本数据类型
基本数据类型都有默认值、值域。默认值在内存中都是0。值域更小的数据类型可以转换为值域更大的数据类型,无需强制转换。
只有char、boolean是无符号的数据类型。char值为非负数,此特性作为数组索引分厂有用。

JVM中基本数据类型大小——存储
JVM调用一个Java方法创建一个栈帧。栈帧主要有两个部分:局部变量区、字节码操作数栈。
在JVM规范中,局部变量区等价于数组,可用正整数索引。只有double、long数据类型要两个数组单元来存储,其他基本数据类型、引用数据类型都只用一个数组单元存储。即byte、short、char、float占用空间和int一样,引用数据类型也是。在32位的HotShot中,这些类型在栈上占用4个字节;在64位HotShot中,占用8个字节。
以上情况只存在于存放在栈上的数据类型,存放在堆上的数据类型占用空间跟他们的值域吻合。
JVM中基本数据类型——加载
JVM算数运算几乎全部依赖于操作数栈。即要将中boolean、char、short、byte加载到操作数栈上,然后将栈上的值当成int类型来运算。对于无符号的boolean、char类型,加载伴随零扩展,即char值复制到int的低二字节,高二字节用0填充。对于short、byte类型,加载伴随符号扩展,即short值复制到int的低二字节,若为负最高位1填充其余高二位0填充。


ps:虚心求教。如果内容有误欢迎指出,如果内容帮助了你欢迎留下痕迹。

END

猜你喜欢

转载自blog.csdn.net/qq_32328959/article/details/88530190