JDK1.8 The Java® Virtual Machine Specification《2.The Structure of the Java Virtual Mach》(3)

 

2.3.3 返回地址类型和值

返回地址类型被java虚拟机的jsr ret 和 jsr_w指令使用。返回地址的值是指针,他们指向了java虚拟机指令集的操作码。与数字基本类型不同的是,返回地址类型并不对应于任何java编程语言中的类型,并且他不能在运行的时候被程序修改。

2.3.4 布尔类型

虽然java虚拟机定义了布尔类型,但是java虚拟机对它提供了很小的支持。java虚拟机没有专门用于操作布尔类型的指令。反而 java编程程序中对布尔类型的操作将会转化成虚拟机中的int类型。

java虚拟机直接支持布尔类型的数组。newarray指令会创建一个布尔类型的数组,java虚拟机会执行byte数组类型的指令:(baload和bastore) 访问并修改布尔类型的数组。

在oracle的java虚拟机实现中,所有的布尔类型数组都会转换成java虚拟机能处理的byte数组,每一个布尔类型的元素都会产生8位的btye类型元素

java虚拟机使用1来表示真true,0来表示假false,要想完成java编程语言中的布尔类型数值与为java虚拟机int类型数据间的映射转换,编译器必须使用相同的编码。

2.4 引用类型和值

有三种引用类型的值,他们是:class类型,数组类型和接口类型。这三种类型的引用类型的值分别是动态创建的类实例,数组 或者是实现了接口的实例或数组

一个数组类型由单维度(长度不是根据类型给出)的组件类型组成。数组的组件类型本身可以是数组类型自身。如果考虑到这个组件的类型以任意一个数组类型开头,并且之后的类型都是一个数组类型的组件,到最后数字组的组件不是一个数组类型,这就叫数组的元素类型。。(这tm什么意思 If, starting from any array type, one considers its component type, and then (if that is also an array type) the component type of that type, and so on, eventually one must reach a component type that is not an array type; this is called the element type of the array type. ),数组元素的类型必须是基本数据类型,类类型或者接口类型

一个引用类型也许会是个特殊的空引用,这意味着它并不会引用任何对象,所以会被赋予一个null ,这个null引用最初可能是没有任何运行时类型,但是随着时间推移他可能会变成任何类型的引用,引用类型的初始数据就是null。

该文档中并不要求引用类型的值要编码成null。(This specification does not mandate a concrete value encoding null.)

 

你可能感兴趣的:(研读java虚拟机规范)