Java虚拟机(二)

数据类型

Java虚拟机操作的数据类型可以分成两大类, 基本类型引用类型。引用类型的变量的值是指向对象的,而不是对象本身,相反,基本类型的值并不指向任何东西,存储的是它们的真实数据。数据类型的分类如下图所示:

所有java语言的基本类型都是java虚拟机的基本类型。虽然boolean作为java虚拟机的基本类型,但是java虚拟机对boolean的支持是非常有限的,当编译器把java源代码编译成字节码时,boolean通常会被替代为ints或者bytes。在java虚拟机中,false用整数0表示,true用非0整数表示,涉及到boolean值的操作用ints替代。boolean数组会被作为byte数组来访问。

java虚拟机的数字类型分为 整数类型浮点类型。跟java语言一样,java虚拟机的基本类型在任何地方范围都是固定的,与底层的平台无关。 java虚拟机有一种数据类型是java语言没有的:returnAddress类型。这种类型用于实现java语言中finally语句。

java虚拟机引用类型的值有三种:class类型,interface类型和array类型。这三种类型都是动态创建对象的引用,值为null的引用变量表示不指向任何对象。

java虚拟机规范定义了每种数据类型的值的范围,但是并没有定义它们的大小,存储数据类型的值要用到的bit位由各自的实现者决定。各种数据类型的范围如下图所示:


Word的大小

Java虚拟机中的数据值大小的基本单位是 word —— 由java虚拟机实现的设计者决定的固定值。word的大小必须足够大来容纳一个byte,short,int,char,float,returnAddress或者reference类型的值。两个word必须要足够大来容纳一个long或者double类型的值。所以一个word的大小至少要32位(int占32位),word的大小经常被定为主机平台的一个native指针的大小。

很多java虚拟机数据区的规范都是基于word这个抽象概念的。例如,java栈的两个部分——本地变量和操作数栈,都是根据word来定义的。这些区域可以包含任何虚拟机数据类型的值。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值