Java的8种基本数据类型为byte、short、int、long、float、double、char、boolean;其中byte占1字节(-128~127),short占2字节(-32768~32767),int占4字节(-2147483648~2147483647),long占8字节(-9223372036854775808~9223372036854775807),float占4字节(约±3.4×10³⁸,6~7位有效数字),double占8字节(约±1.8×10³⁰⁸,约15位有效数字),char占2字节(0~65535,Unicode字符),boolean无固定字节大小,仅取true或false。

Java 的 8 种基本数据类型各自有严格规定的存储字节和取值范围,不是凭经验估算的。理解这些细节,能避免溢出、精度丢失、比较异常等常见问题。
整数类型:字节与边界必须匹配
整数类型按位宽划分,每种都对应固定字节数和确定范围:
- byte:1 字节,-128 ~ 127。适合网络协议、文件流或大数组中节省空间
- short:2 字节,-32768 ~ 32767。可用于音视频采样、传感器原始值等中等范围场景
- int:4 字节,-2147483648 ~ 2147483647。最常用,默认整型,日常计数、索引、ID 多用它
-
long:8 字节,-9223372036854775808 ~ 9223372036854775807。时间戳(毫秒)、大额计数、数据库主键常需 long,字面量要加
L(如10000000000L)
浮点类型:精度与比较陷阱
float 和 double 遵循 IEEE 754 标准,无法精确表示多数十进制小数:
- float:4 字节,约 ±3.4×10³⁸,有效数字 6~7 位。资源受限时可用,但不推荐用于计算
- double:8 字节,约 ±1.8×10³⁰⁸,有效数字约 15 位。默认浮点类型,仍不适合金融运算
- 避免用
==比较浮点数,改用Math.abs(a - b) < epsilon(如1e-6对 float,1e-10对 double) - 金额、利率等必须用
BigDecimal,否则四舍五入误差会累积
char 与 boolean:容易被误解的本质
这两个类型常被表面描述误导:
立即学习“Java免费学习笔记(深入)”;
-
char 是无符号 2 字节整数(0 ~ 65535),不是“字符容器”。
'A'实际是整数 65,可参与算术运算,比如'Z' + 1得到 91(即 '[') -
boolean 没有规定 JVM 中的存储大小。单个变量由具体实现决定;
boolean[]通常按 byte 模拟(每个元素占 1 字节),但不能当成 int 或 byte 使用 - 注意单引号与双引号区别:
'a'是 char,"a"是 String —— 完全不同的类型
内存与性能:基本类型为何更高效
基本类型直接存值,没有对象开销:
- 局部变量存在栈上,成员变量内联在对象结构里,无对象头、无 GC 压力
- 一旦装箱为
Integer、Double等包装类,就变成堆上对象,带来分配和回收成本 - Integer 缓存机制(-128 ~ 127)会让
==偶尔“碰巧”成立,但不可依赖;比较值请始终用.equals() - 高频循环、大数据量处理中,优先使用基本类型数组(如
int[])而非List<Integer>


















