Inside the Java Virtual Machine学习笔记8

105 阅读1分钟

数据类型

本文类容源自Java SE14 JDK规范,因为书本内容部分知识已过时。

Java 虚拟机对两种类型进行操作:原始类型和引用类型。

原始类型

Java 虚拟机支持的原始数据类型是数值类型、布尔类型和 returnAddress 类型。

数值类型由整型和浮点型组成。

returnAddress 类型由 Java 虚拟机的 jsr、ret 和 jsr_w 指令使用。

returnAddress 类型的值是指向 Java 虚拟机指令操作码的指针。

returnAddress 类型不对应任何 Java 编程语言类型,并且不能被正在运行的程序修改。

尽管 Java 虚拟机定义了布尔类型,但它只提供了非常有限的支持。没有专门用于布尔值操作的 Java 虚拟机指令。相反,Java 编程语言中对布尔值进行操作的表达式被编译为使用 Java 虚拟机 int 数据类型的值。 Java 虚拟机确实直接支持布尔数组。它的 newarray 指令 (§newarray) 可以创建布尔数组。使用字节数组指令 baload 和 bastore(§baload,§bastore)访问和修改布尔类型的数组。

Java 虚拟机使用 1 表示 true 和 0 表示 false 对布尔数组组件进行编码。在 Java 编程语言布尔值由编译器映射到 Java 虚拟机类型 int 的值的情况下,编译器必须使用相同的编码。

引用类型

引用类型分为三种:类类型、数组类型和接口类型。

各类型概览图如下: