java虚拟机规范 第2部分 java 虚拟机的结构

2 java 虚拟机的结构
这个文档规范了一个抽象的机器。它没有描述java 虚拟机的任何一个具体的实现。
为了正确地实现java 虚拟机,你仅需要能够读取类文件的格式,并且正确地执行
它包含的操作。实现的细节不是java 虚拟机的规范的一部分,这会不必要地限制
实现者的创造性。例如,运行时数据区的内存布局,垃圾回收算法的使用,java
虚拟机的指令的内部优化(例如把它们翻译成机器码),被留给了实现者去处理。

 

在这个规范中对Unicode的所有的引用,都指向Unicode的标准10.0.0
网址http://www.unicode.org/

 


   2.1 文件格式
由java虚拟机执行的已编译的代码被表示成一个与硬件和操作系统无关的二进制格式。
通常(而不是必须的)存储在一个文件中,即大家熟知的类文件格式。类文件格式精确地
定义了一个类或者是一个接口的表示,包括了例如字节序和对一个特定平台上的对象
文件格式的授权等的细节。

 

第四章 类文件格式 含盖了类文件的格式的细节部分。

 

   2.2  数据类型
与java编程语言一样,java虚拟机操作两种类型。原生的类型和引用的类型。相应的是
这两种类型的值能被存储在变量中,以实际参数传递,在方法中返回,和操作中使用。
它们是原生的值和引用的值。

 

java虚拟机期望几乎所有的类型检查在运行时之前做好,一般由一个编译器来完成,而不是不得不
由java虚拟机本身来完成。原生的类型的值不需要被标注,或者否则在运行时被注入来确定它们
的类型,或者从引用类型的值来区别。为了操作特定的类型的值,使用指令,来代替,java虚拟机来区分
它的操作数的类型的指令集。例如,iadd,ladd,fadd dadd 是所有的java虚拟机的指令来把两个数据的值
相加生成一个数据的结果,指令中的每一个被指定为操作数的类型,int,long,float,double.
在java虚拟机中的指令集支持的类型的概述见2.11.1

 

java虚拟机包括了对对象的显式的支持。一个对象或者是一个动态分配的类的实例,或者是一个数组。
对一个对象的引用被认为是有java虚拟机的引用类型。引用类型的值能够被认为是一个对象的指针。
对一个对象的多个引用是存在的。对象总是通过引用类型的值被操作,传递,和测试。

 

   2.3 原生的类型与值
java虚拟机支持的原生的数据类型包括,数值类型,布尔类型,
和返回地址类型。
    数值类型包括整数类型和浮点数类型。
    整数类型包括:
    字节,它的值是8比特的有符号的整数,它的默认值是0
     短整数,它的值是16比特的有符号的整数,它的默认值是0
     整数,它的值是32比特的有符号的整数,它的默认值是0
     长整数,它的值是64比特的有符号的整数,它的默认值是0
     字符  它的值是16比特的无符号的整数表示基本的多语言的unicode编码的点
             编码方式是UTF-16,它的默认值是空代码点(‘\u0000’)

 

     浮点数类型是:
           浮点数 它的值是浮点数的集合或者是科学记数法的值的集合,默认为正0。
           双精度数 它的值是双精度数的集合或者是科学记数法的值的集合,默认为正0。
            布尔类型的值编码为true 和false,默认值 为false。

           java虚拟机规范的第一版没有认为布尔类型是一种 java虚拟机的类型,然而在 java虚拟机中
有部分的支持布尔值。java虚拟机规范的第二版通过把布尔视为一种类型来分类问题的。
            返回地址的类型的值 是java虚拟机指令的指令码的指针。在原生的类型中只有返回地址类型
没有直接关联到java编码语言的类型。
      
         2.3.1 整数类型和值
        在 java虚拟机中,整数类型的值范围如下:
       对于type, 从-128到127
       对于short  从-32768到32767
       对于int  从-2147483648到2147483647
       对于long  从-9223372036854775808 到9223372036854775807
       对于char  从0到65535

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值