short是Java中16位有符号整数类型,取值范围-32768~32767;声明时需注意字面量默认为int,超范围须强制转换;运算中自动提升为int,赋值需显式强转;适用于内存敏感或协议对齐等特定场景。

short 是 Java 中的基本数据类型之一,用来表示 16 位有符号整数,取值范围是 -32768 到 32767(即 -2¹⁵ 到 2¹⁵-1)。
short 的声明和初始化
可以直接用字面量赋值,但要注意:Java 编译器会把没有后缀的整数字面量默认当作 int 类型。所以如果直接写超出 short 范围的数,或想明确用 short,推荐显式强制转换或使用小范围字面量:
-
合法写法:
short s1 = 100;(100 在 short 范围内,编译器自动窄化) -
需要强制转换:
short s2 = (short) 50000;(50000 超出范围,截断高位) -
不合法写法:
short s3 = 50000;(编译报错:可能损失精度)
short 在运算中容易被自动提升为 int
Java 规定:所有整数运算(如 +、-、*、/)中,short、byte、char 都会先被提升为 int 再计算。这意味着:
-
short a = 10, b = 20; short c = a + b;—— 这行会编译失败,因为a + b结果是 int,不能直接赋给 short - 正确写法:
short c = (short)(a + b);(手动强转) - 方法参数传参时也一样:调用
void foo(short x),传入foo(10)可以(字面量在范围内),但foo(a + b)就必须强转
什么时候该用 short?
它不是常用类型,多数场景用 int 更安全自然。适合以下情况:
猫宁Morning公益商城是中国公益性在线电子商城,以商城B2C模式运营的公益在线商城,是一家致力于将传统公益商城互联网化的创新公益商城。该网上商城系统分为电子商城系统、公益商城系统、后台管理系统,使用Maven对项目进行模块化管理,搭建多模块企业级项目。Morning是在Spring Framework基础上搭建的一个Java基础开发平台,以Spring MVC为模型视图控制器,MyBatis为
立即学习“Java免费学习笔记(深入)”;
- 明确知道数值很小且数量极大(比如处理上百万个温度传感器数据,每个只需 -50~50℃)
- 与外部协议或文件格式对齐(如某些二进制协议规定字段占 2 字节)
- 内存极度敏感的嵌入式或高性能场景(但现代 JVM 优化下,实际收益常不如预期)
注意事项和常见误区
别为了“省空间”盲目用 short,反而增加出错风险:
- 不能直接参与算术表达式赋值,容易忘加
(short) - 和 int 混用时隐式转换只在赋值时发生,且仅限常量折叠(如
short x = 1 + 2;可以,因为编译期算出是 3) - 泛型不支持基本类型,所以没有
List,只能用List(包装类,有自动装箱开销)
基本上就这些。short 在 Java 基础里是个“存在感低但规则明确”的类型——用得少,但一旦用,就得记清它的范围和自动提升规则。










