选最小够用的基本类型可显著节省内存:byte(1字节)适用于HTTP状态码、年龄等小范围值;short(2字节)用于传感器数据等中等范围;int(4字节)为通用默认;long(8字节)仅限时间戳等超大数;float比double省空间但精度低;boolean数组和BitSet优于包装类。

选对基本类型是节省 Java 存储空间最直接、见效最快的方式。核心就一条:在满足业务范围和精度的前提下,选最小够用的类型。
整数类型按实际范围选,别默认 int
int 占 4 字节,但很多场景根本用不到这么大范围:
- byte(1 字节):适合 -128~127 的值,比如 HTTP 状态码(200/404/500)、用户年龄、RGB 颜色分量、协议中的标志位。百万级数组用 byte 能比 int 少占 3MB 内存。
- short(2 字节):适用 -32768~32767,如传感器温度读数、小尺寸数据库 ID(对应 SMALLINT)、音频采样值。
- int(4 字节):仍是通用首选,尤其循环变量、数组索引——JVM 对它有指令级优化,用 byte 或 short 反而会自动提升为 int,没实际收益。
- long(8 字节):只在真正需要超大整数时用,比如毫秒时间戳、分布式唯一 ID。注意:用 String 存 UUID 比 long 更耗内存,要权衡可读性与空间。
浮点数看精度容忍度,能用 float 就不用 double
float 占 4 字节,double 占 8 字节——差一倍。不是所有场景都需要 double 的高精度:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 用 float 的典型场景:图形坐标、游戏物理模拟、推荐系统分数(保留 1 位小数即可)、传感器原始读数。
- 必须用 double 的场景:金融计算(即使最终用 BigDecimal,中间也常以 double 转换)、科学计算、高精度经纬度。
- 注意:0.1f + 0.2f ≠ 0.3f,0.1d + 0.2d 也不等于 0.3d——浮点本质是近似,关键看业务是否允许误差。
布尔和字符也要精打细算
boolean 虽然 JVM 规范未规定具体字节数,但实际使用中应避免用包装类 Boolean(至少 16 字节),更别说拿 Integer 代替开关标志。
立即学习“Java免费学习笔记(深入)”;
- 大量布尔状态时,优先用 boolean 数组 或 BitSet,比独立字段或对象集合省得多。
- char 固定占 2 字节(Unicode),如果只处理 ASCII 字符(0–127),可考虑用 byte 数组 替代 char 数组,省内存且无编码转换开销。
死守基本类型,远离包装类滥用
Integer、Long、Boolean 等不是“升级版”,而是重量级对象:
- Integer 实例至少占 16 字节(对象头 + 字段),而 int 只占 4 字节——相差 4 倍以上。
- 自动装箱/拆箱不仅带来额外 CPU 开销,还可能引发空指针异常(比如 Boolean 为 null 时拆箱)。
- 集合里存大量数字?优先用 原生数组(如 int[])而非 ArrayList
;真要用泛型集合,考虑第三方库如 Eclipse Collections 提供的 IntArrayList。

















