选对基本数据类型核心是“够用就行”:整数按范围选byte/short/int/long,浮点依精度选float/double,避免包装类,字符串复用常量,数组降级可省75%内存。

选对基本数据类型,核心就一条:够用就行。不是越大越安全,而是刚好匹配业务范围和精度需求,才能在内存、性能和可维护性之间取得最优平衡。
按数值范围选整数类型
Java 提供 4 种整数类型,字节大小依次翻倍,但日常开发中很多人默认全用 int,其实多数场景可以降级:
- 年龄、HTTP 状态码、枚举序号、开关标志等 ≤ 127 的值 → 用 byte(-128 ~ 127,仅占 1 字节)
- 学号、商品分类 ID、年份(如 1900~2100)、传感器原始采样值 → 用 short(-32768 ~ 32767,占 2 字节)
- 订单数量、用户 ID(中小系统)、时间戳毫秒(2038 年前)→ int 仍是稳妥首选(4 字节)
- 全局唯一 ID(如 Snowflake)、纳秒级时间戳、超大计数器 → 才需要 long(8 字节)
特别注意数组:int[1_000_000] 占约 4MB,换成 byte[1_000_000] 仅需 1MB —— 节省 75% 堆内存,GC 压力明显降低。
浮点类型看精度与用途
float 和 double 不是“小数就够了”就能随便选,关键在误差容忍度:
立即学习“Java免费学习笔记(深入)”;
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。
- 温度、评分、图形坐标、游戏数值、传感器原始读数 → float 完全够用(4 字节,精度约 6~7 位十进制)
- 科学计算、高精度定位、中间运算 → 优先用 double(8 字节,精度约 15~16 位)
- 金融金额、货币结算 → 不能依赖 float/double,必须用 BigDecimal
写代码时注意字面量后缀:3.14f 是 float,3.14 默认是 double,混用会触发隐式转换警告。
字符与布尔类型别硬挤
char 固定占 2 字节(UTF-16),不支持压缩;boolean 在 HotSpot 中字段通常占 1 字节(数组中每个元素也占 1 字节),规范虽未强制大小,但实际不可靠压缩:
- 纯 ASCII 状态标识(如 "OK"、"ERR")→ 少创建 String,多用静态常量或
intern()复用 - 大量布尔字段(如配置开关)→ 可考虑用单个 int 的各位代替多个 boolean 成员,节省对象字段对齐开销
- 别用 byte 或 int 存 true/false → 语义不清,还可能干扰 JVM 优化
基本类型永远优于包装类
Integer、Long、Boolean 是对象,带对象头、引用、装箱拆箱开销,还会触发 GC:
- 集合里存数字?优先用 int[]、long[],或 Eclipse Collections 的
IntArrayList - Map 的 key/value 需要整数?能用 int 就别用 Integer
- 高频计算场景(如循环累加)→ 避免在循环内反复装箱/拆箱
局部变量默认存在栈中,成员变量随对象存在堆上,数组元素连续存于堆——位置不同,但都无 GC 开销、无 null 风险、赋值即拷贝。

















