Java 的基本数据类型共有 8 种,可以分为四大类:整数类型、浮点类型、字符类型 和 布尔类型。

(图片来源网络,侵删)
整数类型
整数类型用于没有小数部分的数字,它们可以是正数、负数或零。
| 数据类型 | 大小 (字节) | 默认值 | 取值范围 | 备注 |
|---|---|---|---|---|
byte |
1 | 0 |
-128 到 127 | [-2⁷, 2⁷-1]节省空间,常用于大型数组,替代 int |
short |
2 | 0 |
-32,768 到 32,767 | [-2¹⁵, 2¹⁵-1]较少使用,除非有特殊需求(如 JNI 调用) |
int |
4 | 0 |
-2,147,483,648 到 2,147,483,647 | [-2³¹, 2³¹-1]最常用的整数类型,默认选择 |
long |
8 | 0L |
-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | [-2⁶³, 2⁶³-1]用于表示非常大的整数,后面需要加 L 或 l |
代码示例:
public class IntegerTypes {
public static void main(String[] args) {
byte b = 100;
short s = 20000;
int i = 1000000;
long l = 15000000000L; // 注意:long类型的字面量需要加L
System.out.println("byte: " + b);
System.out.println("short: " + s);
System.out.println("int: " + i);
System.out.println("long: " + l);
}
}
浮点类型
浮点类型用于表示带有小数部分的数字,即实数,它们遵循 IEEE 754 标准。
| 数据类型 | 大小 (字节) | 默认值 | 取值范围 | 精度 | 备注 |
|---|---|---|---|---|---|
float |
4 | 0f |
大约 ±3.40282347E+38F (正负) | 约 7 位十进制数字 | 单精度浮点数,内存占用小,但精度有限 |
double |
8 | 0d |
大约 ±1.79769313486231570E+308D (正负) | 约 15 位十进制数字 | 双精度浮点数,精度更高,是默认的浮点类型 |
注意:

(图片来源网络,侵删)
float类型的字面量需要加f或F,14f。double类型的字面量可以加d或D,也可以不加,14、14d。- 浮点数不精确:由于二进制表示的局限性,浮点数无法精确表示所有十进制小数,因此在需要精确计算的场景(如金融)中应避免使用。
代码示例:
public class FloatingPointTypes {
public static void main(String[] args) {
float f = 3.14f; // 必须加f
double d = 3.141592653589793; // 默认是double
System.out.println("float: " + f);
System.out.println("double: " + d);
// 浮点数不精确的例子
System.out.println("0.1 + 0.2 = " + (0.1 + 0.2)); // 输出 0.30000000000000004
}
}
字符类型
| 数据类型 | 大小 (字节) | 默认值 | 取值范围 | 备注 |
|---|---|---|---|---|
char |
2 | '\u0000' |
\u0000 到 \uffff (即 0 到 65,535) |
Unicode 字符,用单引号括起来,如 'A'、'好' |
注意:
- Java 使用 Unicode 字符集,
char类型可以存储任何字符,包括中文字符。 char本质上是一个无符号的 16 位整数,所以可以进行算术运算。
代码示例:
public class CharType {
public static void main(String[] args) {
char c1 = 'A';
char c2 = '中';
char c3 = 65; // 等同于 'A'
System.out.println("c1: " + c1);
System.out.println("c2: " + c2);
System.out.println("c3: " + c3);
}
}
布尔类型
| 数据类型 | 大小 (字节) | 默认值 | 取值范围 | 备注 |
|---|---|---|---|---|
boolean |
1 (理论上) | false |
true 或 false |
用于逻辑判断,只能取这两个值 |
注意:

(图片来源网络,侵删)
boolean类型的大小在 Java 语言规范中并未明确规定,JVM 会将其实现为 1 字节(int)或 4 字节(int)以提升性能。不要依赖其具体大小。boolean类型不能与整数类型(如int)进行转换或运算,这与 C/C++ 不同。
代码示例:
public class BooleanType {
public static void main(String[] args) {
boolean isJavaFun = true;
boolean isFishTasty = false;
System.out.println("Is Java fun? " + isJavaFun);
System.out.println("Is fish tasty? " + isFishTasty);
}
}
总结表格
| 分类 | 数据类型 | 大小 (字节) | 默认值 | 取值范围 |
|---|---|---|---|---|
| 整数 | byte |
1 | 0 |
-128 ~ 127 |
short |
2 | 0 |
-32,768 ~ 32,767 | |
int |
4 | 0 |
-2,147,483,648 ~ 2,147,483,647 | |
long |
8 | 0L |
-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | |
| 浮点 | float |
4 | 0f |
大约 ±3.40282347E+38F |
double |
8 | 0d |
大约 ±1.79769313486231570E+308D | |
| 字符 | char |
2 | '\u0000' |
\u0000 到 \uffff (0 ~ 65,535) |
| 布尔 | boolean |
1 (理论) | false |
true, false |
何时使用哪种类型?
- 整数:
- 优先使用
int,除非有特殊原因。 - 如果确定数值不会超过
byte或short的范围,并且有大量数据需要存储(如数组),可以考虑使用byte或short以节省内存。 - 当数值可能超过
int的范围时,必须使用long。
- 优先使用
- 浮点数:
- 优先使用
double,它的精度更高,是 Java 中浮点数的默认选择。 - 只有在内存极其紧张,且单精度(7位小数)足够满足需求时,才考虑使用
float。
- 优先使用
- 字符:
- 使用
char存储单个字符。
- 使用
- 布尔:
- 使用
boolean表示逻辑真/假,用于条件判断和循环控制。
- 使用
希望这份详细的总结能帮助你完全理解 Java 的基本数据类型!
