java虚拟机规范(se8)——java虚拟机结构(一)

第二章 虚拟机结构

2.1 class文件格式

编译后能够被java虚拟机执行的代码使用了一个独立于硬件和操作系统的二进制格式,通常(不是必须的)存在一个文件中,就是通常所说的class文件格式。

2.2 数据类型

类似于java编程语言,java虚拟机操作两种数据类型:基本类型和引用类型(primitive types and reference types)。相应的,有两种类型的数据可以用于变量赋值、参数传递和方法返回:基本值和引用值(primitive values and reference values)。

2.3 基本数据类型和值

 java虚拟机支持的基本类型由数字类型,布尔类型以及returnAddress类型

  数字类型包括整数类型和浮点数类型。

  具体的整数类型如下:

  •   byte,其值为8位有符号二进制补码整数,其默认值为零
  •   short,其值为16位有符号二进制补码整数,其默认值为零
  •   int,其值为32位有符号二进制补码整数,其默认值为零
  •   long,其值为64位有符号二进制补码整数,其默认值为零
  •   char,其值为16位无符号整数,表示基本多文本平面(Basic Multilingual Plane)中的Unicode代码点,使用UTF-16编码,其默认值为空代码点('\ u0000')

  浮点型数字类型如下:

  •   fload,值为单精度浮点数集中的元素,或者(如果虚拟机支持的话)是单精度扩展指数(Float-Extended-Exponent)集合中的元素。默认值为正数零。
  •   double,取值范围是双精度浮点数集合中的元素,或者(如果虚拟机支持的话)是双精度扩展指数(Double-Extended-Exponent)集合中的元素。默认值为正数零。

  布尔类型的值取值范围是true和false,默认值是false(Java®虚拟机规范的第一版没有将布尔值视为Java虚拟机类型。但是,布尔值在Java虚拟机中的支持有限。Java®虚拟机规范的第二版通过将布尔值视为一种类型来澄清该问题。)

  returnAddress类型的值是指向Java虚拟机指令的操作码(opcodes)的指针。在基本类型中,除了returnAddress类型,其它类型都与Java编程语言类型直接相关联。

2.3.1 整数类型和值

  java虚拟机中的整型的取值范围如下:

  byte, (-27 to 27 - 1),

  short,  (-215 to 215 - 1),

  int,  (-231 to 231 - 1)

  long,(-263 to 263 - 1)

  char,(0 ~ 2^16-1)

2.3.2 浮点类型和值

浮点类型就是指 float 类型和 double 类型。

每一个java虚拟机实现都必须支持两种标准的浮点数集:单精度浮点数集合和双精度浮点数集合。

除了 NaN 以外,浮点数集合中的所有元素都是有序的。如果把它们从小到大按顺序排列好,那顺序将会是:负无穷,可数负数、正负零、可数正数、正无穷。 

2.3.3 returnAddress 类型和值

  returnAddress类型被java虚拟机使用在jsr,ret和jsr_w指令中。returnAddress的值是java虚拟机指令操作码的指针。和基本的数字类型不同,returnAddress在java编程语言中没有对应的类型,同时在运行的程序中无法被修改。

2.3.4 布尔类型

 

    尽管java虚拟机定义了boolean类型,但是仅仅提供了非常有限的支持。java虚拟机没有单独专门的指令来操作布尔值。相反,java编程语言中的表达式涉及到boolean类型的值会被编译为java虚拟机中的int类型。

  java虚拟机直接支持布尔数组。java虚拟机中的newarray指令允许创建boolean类型的数组。boolean类型数组的元素通过byte数组指令baload和bastore来访问和修改。

  java虚拟机将boolean数组元素编码成1和0分别表示true和false。java编程语言中boolean值会被编译器映射为java虚拟机中类型int,编译器必须使用相同的编码方式。

2.4 引用类型和值

  总共又三种类型的引用类型(reference):类类型(class types),数组类型(array types)以及接口类型(interface types),它们的值分别表示动态创建的类实例,数组和类实例或者数组实现的接口。

posted on 2020-03-26 16:17  lfw123  阅读(293)  评论(0编辑  收藏  举报

导航