Java 有 8 种基本数据类型(primitive data types),它们不是对象,直接存储在栈内存中,具有固定的内存大小和默认值。
四大类基本数据类型
1. 整数类型(整型)
类型 | 大小 | 取值范围 | 默认值 | 示例 |
---|---|---|---|---|
byte | 8位 | -128 到 127 | 0 | byte b = 100; |
short | 16位 | -32,768 到 32,767 | 0 | short s = 1000; |
int | 32位 | -2³¹ 到 2³¹-1 (约±21亿) | 0 | int i = 100000; |
long | 64位 | -2⁶³ 到 2⁶³-1 | 0L | long l = 100000L; |
2. 浮点类型(小数类型)
类型 | 大小 | 取值范围 | 默认值 | 示例 |
---|---|---|---|---|
float | 32位 | 约 ±3.4e+38 (有效位数6-7位) | 0.0f | float f = 3.14f; |
double | 64位 | 约 ±1.8e+308 (有效位数15位) | 0.0d | double d = 3.1415926; |
3. 字符类型
类型 | 大小 | 取值范围 | 默认值 | 示例 |
---|---|---|---|---|
char | 16位 | Unicode字符,\u0000 到 \uffff | '\u0000' | char c = 'A'; |
4. 布尔类型
类型 | 大小 | 取值范围 | 默认值 | 示例 |
---|---|---|---|---|
boolean | 未明确定义 | true 或 false | false | boolean flag = true; |
注意事项
-
字面量表示:
-
long 类型需要在数字后加
L
或l
(推荐大写 L) -
float 类型需要在数字后加
F
或f
-
double 类型可以加
D
或d
(可省略)
-
-
默认值规则:
-
类成员变量有默认值(如上表所示)
-
局部变量必须显式初始化,否则编译错误
-
-
自动类型转换(从小类型到大类型):
byte → short → int → long → float → double char → int
-
强制类型转换(可能丢失精度):
int i = (int)3.14; // i = 3
-
特殊值:
-
float/double 有正负无穷大(
POSITIVE_INFINITY
,NEGATIVE_INFINITY
) -
float/double 有 NaN(Not a Number)值
-
这些基本数据类型与对应的包装类(如 Integer、Double 等)不同,它们是直接存储值而不是对象引用,因此在性能敏感的场景下更高效。
开启新对话