Java 的几种基本数据类型,各自占多少字节?¶
一、四类八种¶
| 类型 | 字节 | 位 | 包装类 | 默认值 | 取值范围 |
|---|---|---|---|---|---|
| byte | 1 | 8 | Byte | 0 | -128 ~ 127 |
| short | 2 | 16 | Short | 0 | -32768 ~ 32767 |
| int | 4 | 32 | Integer | 0 | -2^31 ~ 2^31-1 |
| long | 8 | 64 | Long | 0L | -2^63 ~ 2^63-1 |
| float | 4 | 32 | Float | 0.0f | IEEE 754 单精度 |
| double | 8 | 64 | Double | 0.0d | IEEE 754 双精度 |
| char | 2 | 16 | Character | '\u0000' | 0 ~ 65535(UTF-16 码元) |
| boolean | 视虚拟机而定 | — | Boolean | false | true / false |
二、分类¶
- 整数:byte、short、int、long
- 浮点:float、double
- 字符:char
- 布尔:boolean
三、注意点¶
boolean没有明确规定占多少字节,JVM 中通常用 1 个 int(数组中用 1 个 byte)。char是 2 字节,因为 Java 内部用 UTF-16 编码。- 基本类型不是对象,没有方法,存放在栈帧的局部变量表中。
- 包装类是对象,存在堆中,有自动装箱拆箱。
高频追问
- 为什么 char 是 2 字节?因为 Java 设计时 Unicode 还是 16 位。
- 包装类缓存:Integer 缓存 -128~127,
Integer a = 127; Integer b = 127;是同一个对象,超过就不是。