跳到主要内容

数据类型

基础数据类型 (Primitive Types)

我们知道不同的数据类型在内存中的存储空间是不一样的。在 Java 中各种类型的长度如下:

类型长度-字节 (byte)长度-位(bit)
boolean432
byte18
short216
int432
long864
char216
float432
double864

可能大家会对 boolean 类型占 4 个字节有疑问,明明只有 0011,为什么会占 4 个字节呢?在虚拟机规范中给出了答案。

There are no Java Virtual Machine instructions solely dedicated to operations on boolean values. Instead, expressions in the Java programming language that operate on boolean values are compiled to use values of the Java Virtual Machine int data type.

Chapter 2. The Structure of the Java Virtual Machine - 2.3.4 The boolean Type

在虚拟机规范中定义了 boolean 类型会被编译为 int 类型。

在 Java 中基础数据类型除了上述的 8 个外,还有一个 returnAddress。这个类型不对应于任何 Java 编程语言类型,并且无法由正在运行的程序修改。仅由 Java 虚拟机的 jsrretjsr_w 指令使用。

引用类型 (Reference Type)

在 Java 中,引用类型的长度是固定的,它是由 JVM(Java 虚拟机)确定的。引用类型的长度是指在内存中存储引用类型的字节数。

在 Java 中,所有的引用类型的长度都是相同的,它是由 JVM 根据平台的不同确定的。通常情况下,引用类型的长度是 4 个字节(32 位平台)或 8 个字节(64 位平台)。