Java Class 文件

2021-04-27

(未完待续)

简介

class 文件是二进制格式的,它包含了被 JVM 执行的代码。由于 class 文件是由 JVM 来执行的,所以它不依赖特定硬件和操作系统。class 文件格式中定义了类与接口的表示形式,包括平台相关的一些细节(如字节序,A平台为大端序存储,B平台为小端序存储)等。

数据类型

JVM 可以操作的数据类型分为两类:原始类型(primitive type) 和 引用类型(reference type)。其中数值类型也分为两类:原始值(primitive value) 和 引用值(reference value)。

原始类型

其中,原始类型 包括:数值类型(numeric type),布尔类型returnAddress类型

  • 数值类型
    • 整数类型
      • byte 8位有符号二进制补码整数,默认值为0
      • short 16位有符号二进制补码整数,默认值为0
      • int 32位有符号二进制补码整数,默认值为0
      • long 64位有符号二进制补码整数,默认值为0
      • char 16位无符号整数表示的 Unicode 码点,以 UTF-16 编码,默认值为 Unicode 的 null 码点(’\u0000')
    • 浮点类型
      • float 值为单精度浮点数集合中的元素,或是单精度扩展指数集合中的元素,默认值为正数0
      • double 值为双精度浮点数集合中的元素,或是双精度扩展指数集合中的元素,默认值为正数0
  • 布尔类型
    • true
    • false 默认值
  • returnAddress类型 指向某个操作码(opcode)的指针

所有 JVM 的实现都必须支持两种标准的浮点值集合:单精度浮点数集合双精度浮点数集合。此外,可以选择是否支持 单精度扩展指数集合双精度扩展指数集合 中的一种或全部。

NaN 和任何数值进行等值比较都会返回 false,包括与它自身比较。任何数字与 NaN 进行不等值比较都会返回 true。

Java 语言中的 boolean 类型在 JVM 中由 int 类型代替;Java 语言中的 boolean 数组类型在 JVM 中由 byte 数组类型代替。true 用1表示,false 用0表示。

引用类型

JVM 中有三种引用类型:类类型(class type),数组类型(array type) 和 接口类型(interface type)。这些类型的值分别指向动态创建的类实例,数组实例和实现了某个接口的类实例或数组实例。

数组类型最外面那一维元素的类型,称为该数组类型的组件类型(component type)。如对于 int[][][] 这种数组类型来说,其组件类型为 int[][]

一个数组的组件类型也可以是数组,从任意一个数组开始,若其组件类型也是数组类型,则继续取这个小数组的组件类型,直到组件类型不是数组,那么该类型就是这个数组类型的元素类型(element type)。数组的元素类型必须是原始类型、类类型或接口类型之一。

null 是引用类型的默认值,它可以转换为任意的引用类型。

JVM

Jeff Liu

vim 配置 Golang 开发

Scheme 环境搭建