数据类型
基础数据类型 (Primitive Types)
我们知道不同的 数据类型在内存中的存储空间是不一样的。在 Java 中各种类型的长度如下:
类型 | 长度-字节 (byte) | 长度-位(bit) |
---|---|---|
boolean | 4 | 32 |
byte | 1 | 8 |
short | 2 | 16 |
int | 4 | 32 |
long | 8 | 64 |
char | 2 | 16 |
float | 4 | 32 |
double | 8 | 64 |
可能大家会对 boolean
类型占 4 个字节有疑问,明明只有 和 ,为什么会占 4 个字节呢?在虚拟机规范中给出了答案。
There are no Java Virtual Machine instructions solely dedicated to operations on
boolean
values. Instead, expressions in the Java programming language that operate onboolean
values are compiled to use values of the Java Virtual Machineint
data type.Chapter 2. The Structure of the Java Virtual Machine - 2.3.4 The boolean Type
在虚拟机规范中定义了 boolean
类型会被编译为 int
类型。
在 Java 中基础数据类型除了上述的 8 个外,还有一个 returnAddress
。这个类型不对应于任何 Java 编程语言类型,并且无法由正在运行的程序修改。仅由 Java 虚拟机的 jsr
、ret
和 jsr_w
指令使用。
引用类型 (Reference Type)
在 Java 中,引用类型的长度是固定的,它是由 JVM(Java 虚拟机)确定的。引用类型的长度是指在内存中存储引用类型的字节数。
在 Java 中,所有的引用类型的长度都是相同的,它是由 JVM 根据平台的不同确定的。通常情况下,引用类型的长度是 4 个字节(32 位平台)或 8 个字节(64 位平台)。