short是Java中16位有符号整数类型,取值范围-32768~32767;声明时需注意字面量默认为int,超范围须强制转换;运算中自动提升为int,赋值需显式强转;适用于内存敏感或协议对齐等特定场景。
short 是 Java 中的基本数据类型之一,用来表示 16 位有符号整数,取值范围是 -32768 到 32767(即 -2¹⁵ 到 2¹⁵-1)。
可以直接用字面量赋值,但要注意:Java 编译器会把没有后缀的整数字面量默认当作 int 类型。所以如果直接写超出 short 范围的数,或想明确用 short,推荐显式强制转换或使用小范围字面量:
short s1 = 100;(100 在 short 范围内,编译器自动窄化)short s2 = (short) 50000;(50000 超出范围,截断高位)short s3 = 50000;(编译报错:可能损失精度)Java 规定:所有整数运算(如 +、-、*、/)中,short、byte、char 都会先被提升为 int 再计算。这意味着:
short a = 10, b = 20; short c = a + b; —— 这行会编译失败,因为 a + b 结果是 int,不能直接赋给 shortshort c = (short)(a + b);(手动强转)void foo(short x),传入 foo(10) 可以(字面量在范围内),但 foo(a + b) 就必须强转它不是常用类型,多数场景用 int 更安全自然。适合以下情况:

别为了“省空间”盲目用 short,反而增加出错风险:
(short)
short x = 1 + 2; 可以,因为编译期算出是 3)List,只能用 List(包装类,有自动装箱开销)基本上就这些。short 在 Java 基础里是个“存在感低但规则明确”的类型——用得少,但一旦用,就得记清它的范围和自动提升规则。