选型核心是用刚好够用的最小类型:byte仅用于网络协议单字节字段等特定场景;short日常几乎不用;int是绝大多数整数场景默认选择;long用于时间戳、分布式id等大范围需求。

选型核心就一条:用刚好够用的最小类型,既保证安全,又兼顾效率和可读性。别为了“省几个字节”硬套小类型,也别默认全用 int 或 long。
byte:只在明确限定且批量使用时才考虑
取值范围 -128 ~ 127,占 1 字节。真正适合它的场景很窄:
- 网络协议或文件格式中规定的单字节字段(比如 HTTP 状态码、TCP 标志位)
- 大量连续存储的状态标志数组(如 boolean 的替代方案,但需自行位运算)
- IO 流读写单个字节(
InputStream.read()返回的就是int,但实际只用低 8 位)
注意:byte 参与算术运算会自动提升为 int,写 byte a = 1, b = 2; byte c = a + b; 会编译失败,必须强转:byte c = (byte)(a + b);
short:日常开发几乎不用
取值范围 -32768 ~ 32767,占 2 字节。JVM 对 short 没有原生指令支持,实际运行时多数操作仍按 int 处理。除非满足两个条件:
- 内存极度敏感(比如百万级
short数组,且确定值不会超界) - 对接外部系统要求 16 位整数(如某些嵌入式设备或二进制协议)
普通业务计数、索引、ID 都不要用 short,它不比 int 更快,反而增加理解成本。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
int:绝大多数整数场景的默认选择
取值范围 -2147483648 ~ 2147483647,占 4 字节。这是 Java 最自然、最安全的整型:
- 循环变量、数组下标、集合 size、HTTP 响应码、状态码、普通 ID(用户 ID、订单号等非分布式场景)
- JVM 对
int有最优支持,运算高效,代码清晰 - 只要数值不超 21 亿,就优先用它——够用、省心、不易出错
long:需要大范围或精确时间/唯一标识时才用
取值范围约 ±9.2×10¹⁸,占 8 字节。关键使用信号很明确:
- 时间戳:如
System.currentTimeMillis()、Instant.toEpochMilli() - 分布式唯一 ID(Snowflake、TinyID 等生成的 64 位 ID)
- 大文件大小(
File.length())、超长计数(如高并发系统累计请求量) - 赋值时必须加
L后缀,例如long ts = 1718995680000L;,否则编译可能报错
金融金额慎用 long(单位为分),推荐用 BigDecimal;普通业务金额若确定无精度问题且单位是“分”,可用 long,但要写清楚注释。
不复杂但容易忽略:类型选对了,能减少隐式转换、避免溢出、提升可维护性。关键是看数据本质,而不是凭感觉。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










