Java 中的数据类型分为两大类:基本数据类型 和 引用数据类型。

- 基本数据类型:Java 语言内置的、最简单的数据类型,它们不是对象,没有方法,变量中直接存储“值”本身,Java 总共有 8 种基本数据类型。
- 引用数据类型:包括类、接口、数组等,它们的变量存储的是指向对象在内存中地址的“引用”。
下面我们详细介绍这 8 种基本数据类型。
Java 的 8 种基本数据类型
这 8 种基本数据类型可以根据其特性分为四类:整数类型、浮点类型、字符类型 和 布尔类型。
整数类型
用于表示没有小数部分的数字。
| 数据类型 | 大小 (位) | 范围 | 默认值 | 备注 |
|---|---|---|---|---|
byte |
8 位 | -128 到 127 | 0 |
占用空间最小,适用于大数组的节省空间。 |
short |
16 位 | -32,768 到 32,767 | 0 |
很少使用,除非需要特定大小的数据。 |
int |
32 位 | -2³¹ 到 2³¹-1 (约 -21亿 到 +21亿) | 0 |
最常用的整数类型。 |
long |
64 位 | -2⁶³ 到 2⁶³-1 | 0L |
用于表示范围非常大的整数,结尾必须加 L 或 l。 |
示例代码:

int age = 30; // 最常用 long population = 7800000000L; // 注意 L,否则会编译错误 byte smallNumber = 100; short year = 2025;
浮点类型
用于表示带有小数部分的数字,即实数。
| 数据类型 | 大小 (位) | 范围 | 默认值 | 备注 |
|---|---|---|---|---|
float |
32 位 | 约 ±3.4E38 (7 位有效数字) | 0f |
单精度浮点数。结尾必须加 F 或 f,适用于对精度要求不高的场景。 |
double |
64 位 | 约 ±1.7E308 (15 位有效数字) | 0d |
双精度浮点数,是默认的浮点类型,精度更高,应用更广泛。 |
示例代码:
double price = 99.99; // 默认是 double float pi = 3.14f; // 必须加 f double scientific = 1.23e10; // 科学计数法
字符类型
用于表示单个字符。
| 数据类型 | 大小 (位) | 范围 | 默认值 | 备注 |
|---|---|---|---|---|
char |
16 位 | \u0000 到 \uffff (Unicode 字符) |
'\u0000' |
使用 单引号 包围,'A',存储的是 Unicode 编码值。 |
示例代码:

char grade = 'A'; char chineseChar = '中'; // Java 内部使用 Unicode,可以表示中文等 char escapeChar = '\n'; // 转义字符,表示换行
布尔类型
用于表示逻辑上的“真”或“假”。
| 数据类型 | 大小 (位) | 范围 | 默认值 | 备注 |
|---|---|---|---|---|
boolean |
JVM 依赖 | true / false |
false |
只能取 true 或 false。在 Java 中,boolean 类型的大小没有明确规定,不能用于数值计算(true + 1 是非法的)。 |
示例代码:
boolean isPassed = true; boolean isFinished = false;
总结表格
| 类别 | 数据类型 | 大小 | 默认值 | 包装类 |
|---|---|---|---|---|
| 整数 | byte |
8-bit | 0 |
Byte |
short |
16-bit | 0 |
Short |
|
int |
32-bit | 0 |
Integer |
|
long |
64-bit | 0L |
Long |
|
| 浮点 | float |
32-bit | 0f |
Float |
double |
64-bit | 0d |
Double |
|
| 字符 | char |
16-bit | '\u0000' |
Character |
| 布尔 | boolean |
(JVM-dependent) | false |
Boolean |
补充说明:包装类型
虽然基本数据类型不是对象,但在 Java 面向对象的特性下,有时需要将它们当作对象来使用(在集合类 ArrayList, HashMap 中,只能存放对象),为此,Java 为每种基本数据类型都提供了一个对应的包装类。
| 基本类型 | 包装类 |
|---|---|
byte |
java.lang.Byte |
short |
java.lang.Short |
int |
java.lang.Integer |
long |
java.lang.Long |
float |
java.lang.Float |
double |
java.lang.Double |
char |
java.lang.Character |
boolean |
java.lang.Boolean |
从 Java 5 开始,引入了自动装箱 和自动拆箱 机制,使得基本类型和其包装类之间的转换非常方便。
示例:
// 自动装箱:int -> Integer Integer numObject = 10; // 自动拆箱:Integer -> int int numPrimitive = numObject; // 集合中只能存放对象 List<Integer> numbers = new ArrayList<>(); numbers.add(100); // 自动装箱 int value = numbers.get(0); // 自动拆箱
为什么要有基本数据类型?
- 性能:基本数据类型在内存中直接存储值,没有对象的开销(如对象头),访问速度更快,内存占用更小。
- 内存效率:对于需要处理大量数值的场景(如游戏、科学计算),使用基本类型可以极大地节省内存。
- 语法简洁:使得代码更简洁,更符合底层计算的习惯。
理解基本数据类型是学习 Java 的基石,它们是构建更复杂数据结构和程序逻辑的基础。
