Java语言提供了八种基本数据类型(primitive types),这是Java中最基础、最直接存储在栈内存中的数据类型,不需要new创建对象。
官方标准说法是:
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。
下面用表格清晰列出全部八种基本类型,包括占用字节、默认值、取值范围和典型使用场景:
| 类型 | 关键字 | 占用字节 | 默认值 | 取值范围 | 典型用途 | 备注 |
|---|---|---|---|---|---|---|
| 字节型 | byte | 1 | 0 | -128 ~ 127 | 大数组节省内存、字节流处理 | 最小的整数类型 |
| 短整型 | short | 2 | 0 | -32,768 ~ 32,767 | 节省内存的中小整数 | 实际使用较少 |
| 整型 | 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 | 大整数(如ID、时间戳) | 字面量需加L,如 10000000000L |
| 单精度浮点 | float | 4 | 0.0f | ≈ ±3.4E38(有效数字约6~7位) | 科学计算、对精度要求不高的浮点 | 字面量需加f,如 3.14f |
| 双精度浮点 | double | 8 | 0.0 | ≈ ±1.8E308(有效数字约15~16位) | 绝大多数浮点计算(金额除外) | 最常用的浮点类型 |
| 字符型 | char | 2 | 0 ~ 65,535(Unicode字符) | 存储单个字符 | 本质是16位无符号整数,可写 ‘中’、’\u4e2d’ | |
| 布尔型 | boolean | ~1 | false | true / false | 条件判断、开关标志 | JVM实际实现可能占1字节或4字节 |
六种数字类型(数值类型)详解
用户特别提到“六种数字类型”,它们就是:
- 四个整数类型(都是有符号的整数,按大小递增):
- byte
- short
- int
- long
- 两个浮点类型(表示小数):
- float
- double
这六种类型都属于数值类型,支持算术运算(+ – * / %)、比较运算等。
剩下两种不是数字类型:
- char → 字符类型(本质上是无符号整数,但设计目的是表示字符)
- boolean → 逻辑类型(只能取true/false)
常用记忆口诀
“四整两浮一字符一布尔”
四种整数(byte short int long) + 两种浮点(float double) + char + boolean = 8种
快速示例
public class PrimitiveTypes {
public static void main(String[] args) {
byte b = 127; // 最大127
short s = 32767; // 最大32767
int i = 2147483647; // 常用
long l = 9223372036854775807L; // 要加L
float f = 3.14f; // 要加f
double d = 3.141592653589793; // 默认double
char c = 'A'; // 或 '\u0041'
boolean flag = true;
System.out.println("int 默认值: " + 0); // 0
System.out.println("boolean 默认值: " + false); // false
}
}
面试/学习常考点
- int 是默认整数类型,double 是默认浮点类型
- long 字面量必须加 L 或 l
- float 字面量必须加 f 或 F
- char 可以直接存放中文字符(因为用Unicode编码)
- boolean 不能参与算术运算(不能写 boolean b = 1;)
- 所有基本类型都有对应的包装类(Byte、Short、Integer、Long、Float、Double、Character、Boolean)
如果你想深入某个类型(比如为什么金额不要用double、自动装箱拆箱、整数缓存机制、float精度丢失等),可以告诉我,我再详细展开!