总结表格
这是一个快速参考表,涵盖了所有 8 种基本数据类型的关键信息。

(图片来源网络,侵删)
| 数据类型 | 大小 (字节) | 默认值 | 取值范围 | 包装类 |
|---|---|---|---|---|
byte |
1 | 0 |
-128 ~ 127 | java.lang.Byte |
short |
2 | 0 |
-32,768 ~ 32,767 | java.lang.Short |
int |
4 | 0 |
-2,147,483,648 ~ 2,147,483,647 | java.lang.Integer |
long |
8 | 0L |
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | java.lang.Long |
float |
4 | 0f |
约 ±3.40282347E+38F (精度约 6-7 位小数) | java.lang.Float |
double |
8 | 0d |
约 ±1.7976931348623157E+308 (精度约 15 位小数) | java.lang.Double |
char |
2 | '\u0000' |
'\u0000' (0) ~ '\uffff' (65,535) | java.lang.Character |
boolean |
1 (理论) | false |
true / false |
java.lang.Boolean |
各数据类型详解
整数类型
整数类型用于表示没有小数部分的数字。
| 类型 | 大小 (位) | 取值范围 | 说明 |
|---|---|---|---|
byte |
8 | -128 ~ 127 | 在处理大型数组时,可以节省内存,因为它占用空间最小。 |
short |
16 | -32,768 ~ 32,767 | 很少使用,int 是更好的选择。 |
int |
32 | -2³¹ ~ 2³¹-1 即 -2,147,483,648 ~ 2,147,483,647 |
最常用的整数类型,在大多数情况下,默认选择 int。 |
long |
64 | -2⁶³ ~ 2⁶³-1 即 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
用于表示 int 范围不够大的整数,例如时间戳、大文件大小等。注意:定义 long 类型变量时,数值后需要加 L 或 l,推荐使用 L 以避免与数字 1 混淆。 |
示例代码:
int myInt = 123456789;
long myLong = 1234567890123L; // 必须加 L
// 检查取值范围
System.out.println("Integer.MAX_VALUE: " + Integer.MAX_VALUE); // 2147483647
System.out.println("Integer.MIN_VALUE: " + Integer.MIN_VALUE); // -2147483648
System.out.println("Long.MAX_VALUE: " + Long.MAX_VALUE);
System.out.println("Long.MIN_VALUE: " + Long.MIN_VALUE);
浮点类型
浮点类型用于表示带有小数部分的数字,即实数。
| 类型 | 大小 (位) | 取值范围 | 说明 |
|---|---|---|---|
float |
32 | 约 ±3.40282347E+38F | 单精度浮点数,占用空间小,但精度较低(约 6-7 位有效数字)。注意:定义 float 类型变量时,数值后需要加 f 或 F。 |
double |
64 | 约 ±1.7976931348623157E+308 | 双精度浮点数,占用空间是 float 的两倍,但精度更高(约 15 位有效数字)。默认选择,除非有特殊性能或内存要求。 |
示例代码:

(图片来源网络,侵删)
float myFloat = 123.456f; // 必须加 f
double myDouble = 123.4567890123;
// 检查取值范围
System.out.println("Float.MAX_VALUE: " + Float.MAX_VALUE);
System.out.println("Double.MAX_VALUE: " + Double.MAX_VALUE);
// 精度演示
float a = 123.456789f;
double b = 123.456789;
System.out.println("Float a: " + a); // 可能会丢失精度,输出 123.45679
System.out.println("Double b: " + b); // 精度更高,输出 123.456789
字符类型
| 类型 | 大小 (位) | 取值范围 | 说明 |
|---|---|---|---|
char |
16 | '\u0000' (0) ~ '\uffff' (65,535) | 用于表示单个字符,它是一个 无符号 的 16 位 Unicode 字符,可以存储世界上大多数语言的字符。 |
示例代码:
char myChar = 'A'; char myChar2 = '中'; // Java 内部使用 Unicode 编码 char myChar3 = '\u0041'; // Unicode 表示法,等同于 'A' System.out.println(myChar); // 输出 A System.out.println(myChar2); // 输出 中 System.out.println(myChar3); // 输出 A
布尔类型
| 类型 | 大小 (位) | 取值范围 | 说明 |
|---|---|---|---|
boolean |
(未严格规定) | true / false |
只有两个值:true 和 false,用于逻辑判断。注意:boolean 的大小在 JVM 规范中未明确定义,理论上可以是 1 bit,但在实践中(如 HotSpot JVM)通常会被虚拟机优化为使用 4 字节(int)或 1 字节(byte)来存储。 |
示例代码:
boolean isJavaFun = true;
boolean isFishTasty = false;
if (isJavaFun) {
System.out.println("Java is fun!");
}
重要补充
如何计算取值范围?
对于有符号的整数类型(byte, short, int, long),其取值范围遵循以下规则:
- 最大值:
2^(n-1) - 1 - 最小值:
-2^(n-1)
n 是该类型所占的位数。

(图片来源网络,侵删)
以 int 为例(n=32):
- 最大值:
2^(32-1) - 1=2^31 - 1= 2,147,483,647 - 最小值:
-2^(32-1)=-2^31= -2,147,483,648
类型转换
Java 中基本数据类型的转换分为两种:
-
自动类型转换(隐式):当把一个范围小的数据类型赋值给范围大的数据类型时,Java 会自动进行转换,不会丢失精度。
int i = 100; long l = i; // 自动从 int 转换为 long
-
强制类型转换(显式):当把一个范围大的数据类型赋值给范围小的数据类型时,必须使用强制类型转换。这可能会导致精度丢失或数据溢出。
long l = 100L; int i = (int) l; // 必须强制转换 // 溢出示例 long bigLong = 2147483648L; // 超出了 int 的最大值 int overflowedInt = (int) bigLong; // 溢出,结果会是负数 System.out.println(overflowedInt); // 输出 -2147483648
希望这份详细的解释能帮助你完全理解 Java 基本数据类型的取值范围!
