Java虚拟机学习之第三章

CHAPTER 3
java虚拟机结构
 这本手册指定了一个抽象的机器。它不是任何一份描述一个特殊实现了的java虚拟机的文档,当然也不包括SUN公司的微系统。
 为了正确的实现java虚拟机,你仅仅只需要能够阅读类文件格式和正确的执行其中的操作。实现java虚拟机细节不是该规范的一部分,如果那样会限制java虚拟机实现者的创造性。比如,运行时数据区域在内存中的布局,GC的算法设计,以及任何内部的java虚拟机指令优化都取决于具体的实现者。
3.1 类文件格式
 编译过的代码能够被java虚拟机执行意味着该编码是一种和硬件以及操作系统相对独立的二进制格式,通常以文件形式存储,既class后缀的文件格式。这种类文件精确定义了一种类或者接口的说明,包括一些可以很好的在特殊平台上执行的目标文件的字节码顺序的详细信息。(太拗口了....)
3.2 数据类型
  这部分我想画一个流程来说明规范中如何区分我们所知的数据类型的。
                                                                           /   1.1  integer types          -->byte,short,int,long,char
                                           / 1,numeric types --   1.2 floating-point types -->float,double
 I      primitive types         --  2,boolean type      -->truth/false
                                          \ 3,the returnAddress type    -->The values of the returnAddress type are pointers to the opcodes of Java virtual machine instructions.
         
         
 II    reference types  -->JVM's jsr,ret,and jsr_w instructions;There are three kinds of reference types: class types, array types, and interface types
3.3 简单数据类型
 PS:不知道规范是这样定义的,课本上的描述多少有点出入。
 java虚拟机所支持的简单数据类型包括数值类型(numeric type)、boolean类型(boolean type)和返回地址类型(returnAddress type)。数值类型包括整型(integral types)和浮点型(floating-point types)。
 整型如下:

  • byte,8位有符号二进制补码整数。
  • short,16位有符号二进制补码整数。
  • int,32位有符号二进制补码整数。
  • long,64位有符号二进制补码整数。
  • char,16位无符号整数代表Unicode编码。



 浮点型如下:

  • float,其值为folat数集的任何一个元素,或者,如果支持,也可以是float扩展数集。
  • double,其值为double数集的任何一个元素,或者,如果支持,也可以是double扩展数集。

 布尔类型的值:true/false。
 返回地址值:returnAddress类型的值是指向java虚拟机指令的操作码。在简单数据类型中仅仅只有returnAddress类型是不直接和java编程语言相关联的类型。
3.3.1 整数类型和值
 该部分讲解了整数类型的取值范围。对于学习语言来说,应该熟悉。
 《java解惑》之**
  谜题3:长整数
  谜题4:初级问题
  谜题5:十六进制的趣事
  谜题9:半斤
  谜题10:八两
 这些变态的名字是怎么取出来的?看看书才知道有些问题出现的莫名其妙,却是那么引人深思。

你可能感兴趣的:(java,数据结构,编程,虚拟机,算法)