Java八种基本数据类型为byte、short、int、long、float、double、char、boolean,分属整数、浮点、字符、布尔四类,各有固定内存大小、取值范围及默认值,不随平台变化。

Java 的八种基本数据类型是语言底层最基础的构建单元,每种类型都有明确的取值范围、默认值和固定内存大小,不随平台变化。
八种基本数据类型的完整列表
Java 中的基本数据类型共八种,分为四类:
- 整数类型(4种):byte、short、int、long
- 浮点类型(2种):float、double
- 字符类型(1种):char
- 布尔类型(1种):boolean
各类型内存占用与关键特性
所有基本类型的内存大小在 JVM 规范中明确定义,与操作系统位数无关(例如 int 永远是 4 字节):
- byte:1 字节(8 位),取值范围 -128 ~ 127,默认值 0
- short:2 字节(16 位),取值范围 -32,768 ~ 32,767,默认值 0
- int:4 字节(32 位),取值范围 -2³¹ ~ 2³¹−1(约 ±21 亿),默认值 0
- long:8 字节(64 位),取值范围 -2⁶³ ~ 2⁶³−1,默认值 0L
- float:4 字节(32 位 IEEE 754 单精度),默认值 0.0f
- double:8 字节(64 位 IEEE 754 双精度),默认值 0.0d
- char:2 字节(16 位 Unicode 字符,UTF-16 编码),取值范围 '\u0000' ~ '\uffff'(0 ~ 65535),默认值 '\u0000'
- boolean:JVM 规范未规定具体字节数,实际取决于具体实现(HotSpot 中在数组里占 1 字节,在字段中可能被压缩或对齐为 1/4/8 字节),仅表示 true 或 false,默认值 false
常见误区提醒
注意几个容易混淆的点:
立即学习“Java免费学习笔记(深入)”;
- char 是无符号类型,不能表示负数;而 byte、short、int、long 均为有符号类型
- boolean 不参与算术运算,也没有字面量对应的字节数定义,不能用 byte 替代 boolean 来“节省内存”——JVM 对其存储做了优化,手动替换反而可能增加 GC 开销或降低可读性
- long 和 double 占 8 字节,但它们的赋值和读写在 32 位 JVM 上不是原子操作(JVM 规范要求 volatile long/double 具备原子性)
- 所有基本类型的默认值只在类成员变量(field)中自动生效;方法内的局部变量必须显式初始化,否则编译报错
如何验证内存占用?
虽然 Java 不提供直接获取单个变量内存大小的 API,但可通过以下方式间接确认:
- 查阅 JVM 规范 §2.3 —— 官方唯一权威依据
- 使用 JOL(Java Object Layout)工具分析对象布局,观察基本类型字段的偏移与占用(如 new Object() 中添加 int field,对比前后 size 差值)
- 注意:基本类型变量本身不包含对象头或对齐填充,其大小即规范定义值;但作为对象字段时,受对象内存对齐(通常 8 字节边界)影响,总对象大小可能大于字段之和


















