Java整数类型应按需选择:byte、short、int、long分别占1/2/4/8字节,范围依次扩大;long仅在时间戳、分布式ID、大文件大小等超int上限(21亿)时必需;字面量需加L后缀或用Long.MAX_VALUE;long内存翻倍、性能略低,须权衡使用。

Java 中的整数类型不是“越大越好”,而是要按需选择。long 类型虽能存超大数字,但占内存多、运算略慢;int 在绝大多数场景已足够。关键在于理解每种类型的边界和适用条件,避免溢出或浪费资源。
四种整数类型的存储空间与取值范围
Java 提供 byte、short、int、long 四种有符号整型,它们的位宽固定、范围确定,不随操作系统变化:
- byte:1 字节(8 位),范围是 -128 到 127
- short:2 字节(16 位),范围是 -32,768 到 32,767
- int:4 字节(32 位),范围是 -2,147,483,648 到 2,147,483,647
- long:8 字节(64 位),范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
什么时候必须用 long?看三个硬性信号
当业务数据可能突破 int 最大值(约 21 亿)时,long 就不是“可选”,而是“必需”。常见判断依据:
- 时间戳:System.currentTimeMillis() 返回毫秒值,2038 年后 int 就会溢出,必须用 long
- 数据库主键:尤其是分布式 ID(如 Snowflake)、自增 ID 超过 20 亿后,int 不再安全
- 文件大小或字节数:一个 10GB 文件就是 10,737,418,240 字节,远超 int 表示能力
long 字面量写法与常见陷阱
Java 中整数字面量默认是 int 类型。直接写 9223372036854775807 会编译失败——它超出了 int 范围,又没声明类型。
立即学习“Java免费学习笔记(深入)”;
- 正确写法一:加 L 后缀(推荐大写,避免和数字 1 混淆),如
9223372036854775807L - 正确写法二:用常量
Long.MAX_VALUE,语义清晰且不易出错 - 错误示范:写成
9223372036854775807l(小写 L),在某些字体下易被误读为 1
性能与内存的务实权衡
long 占用内存是 int 的两倍,在高频循环、海量数组或网络序列化中不可忽视:
- 数组场景:存储 1000 万个计数器,用 int 是 ~40MB,用 long 约 ~80MB
- 方法参数/返回值:若接口明确只处理年龄、状态码、页码等小数值,坚持用 int 更健壮
- 混合使用:可将 long 用于 ID、时间等核心字段,其余索引、偏移量仍用 int,兼顾安全与效率


















