java有8种基本数据类型:byte、short、int、long、float、double、char、boolean,各自适用场景明确;整数按范围选型,浮点用double优先、金额禁用;char是16位unicode整数,boolean仅true/false;integer缓存-128~127,比较用.equals()。

Java有8种基本数据类型,它们是程序运行的底层基石,直接存值、不占对象开销,选对类型能省内存、避精度坑、防隐式转换错误。
整数类型:按需选大小,别默认全用int
byte(1字节)、short(2字节)、int(4字节)、long(8字节)都用于整数,但适用场景差异明显:
- byte适合小范围且内存敏感场景,比如网络协议字段、图像像素值(-128~127)
- short较少用,仅在明确需节省空间且数值≤32767时考虑
- int最常用,年龄、计数器、数组索引等基本都够用
- long必须用于大数,如时间戳(System.currentTimeMillis())、用户ID、金额(若不用BigDecimal);赋值时记得加L后缀,否则超int范围会编译报错
浮点类型:double是默认,float要加f,精度问题不能忽视
float和double都遵循IEEE 754标准,但精度与用途不同:
- float占4字节,约7位有效数字,适合对精度要求不高、大量存储的场景(如传感器原始数据数组)
- double占8字节,约15位有效数字,是Java浮点数的默认类型,日常计算优先用它
- 0.1 + 0.2 ≠ 0.3——这是二进制无法精确表示十进制小数导致的固有缺陷,涉及金额、金融计算必须用BigDecimal,不能靠四舍五入“掩盖”
字符与布尔:char是数字,boolean只有true/false
char看似存字母,实则是16位无符号整数,对应Unicode码点:
- 可参与算术运算,例如
char c = 'A' + 1;结果是'B' - 支持中文、emoji等,如
char ch = '中';合法且常用 - boolean只接受
true或false字面量,不能用1/0或"true"字符串代替;默认值为false,常用于开关状态、条件判断
装箱拆箱与缓存:Integer(-128~127)的==陷阱
基本类型不能直接放进集合或泛型,靠包装类(如Integer)桥接,Java自动处理装箱(int→Integer)和拆箱(Integer→int):
- 自动装箱本质是调用
Integer.valueOf(),而该方法对-128到127之间的值做了缓存复用 - 所以
Integer a = 100; Integer b = 100; a == b返回true,但Integer c = 200; Integer d = 200; c == d返回false - 比较值是否相等,一律用
.equals(),避免因缓存机制引发逻辑错误
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











