选对整型关键看数值是否超限和是否需省内存:byte(-128~127)适合状态码等小范围省空间场景;short(-32768~32767)极少使用;int(±21亿)是日常开发默认主力;long(±9.2千万亿)用于时间戳、分布式ID等大数场景,须加L后缀。

选对整型关键看两个点:数值会不会超限,以及要不要省内存。Java 四种整型都是有符号补码,范围固定、不随系统变,用错轻则数据溢出,重则编译报错。
byte:小范围 + 省空间的专用场景
1 字节,范围 -128 ~ 127。它是最小整型,不能存 128 或 -129 —— 编译直接失败,比如 byte b = 128; 就过不了。
- 适合状态码(如
byte status = 1;)、协议字段、ASCII 字符、图像像素值(0~255 经常转成 byte 处理) - 大批量存储时显著节省内存,例如百万级字节数组比用 int 节省 75% 空间
- 注意算术运算易溢出,
byte a = 127; byte b = (byte)(a + 1);结果是 -128,不是 128
short:基本可忽略,除非特定硬件或音视频采样
2 字节,范围 -32768 ~ 32767。现代 Java 开发中极少单独使用。
- 仅在嵌入式、传感器索引、音频采样(如 16 位 PCM)等对内存极度敏感且数值确定落在该区间时才考虑
- 普通业务逻辑、循环变量、方法参数一律不用 short,JVM 对它的优化不如 int
- 赋值无需后缀,但超出范围同样编译报错,如
short s = 32768;不合法
int:默认主力,日常开发首选
4 字节,范围 -2147483648 ~ 2147483647(约 ±21 亿)。它是 Java 整数运算的默认类型。
立即学习“Java免费学习笔记(深入)”;
- 数组索引、循环计数器、HTTP 状态码、中小系统业务 ID、配置项数值,全用 int
- 方法参数和返回值没特别理由就别换其他整型,兼容性和可读性最好
- 超过 21 亿要小心,比如用户注册量、订单总数在高增长系统中可能触顶
long:大数必备,时间戳和分布式 ID 的标配
8 字节,范围 -9223372036854775808 ~ 9223372036854775807(约 ±9.2 千万亿)。唯一需要显式加后缀的整型。
- 必须用
L(推荐大写)结尾,如long ts = System.currentTimeMillis();或long id = 1234567890123456789L; - 典型场景:毫秒级时间戳、文件大小(>2GB)、分布式唯一 ID(Snowflake)、高并发计数器、金融大额金额(需配合 BigDecimal 做精度控制)
- 不要用 long 存小数或做浮点运算,精度问题会更隐蔽


















