Integer.signum()用于快速判断整数符号:正数返回1,负数返回-1,零返回0;仅接受int类型,语义清晰且比手动条件判断更简洁安全。

Integer.signum() 是 Java 中一个简洁高效的方法,专门用于快速判断整数的符号:正数返回 1,负数返回 -1,零返回 0。它比手动写 if-else 或三元运算符更直观、不易出错,且语义清晰。
直接调用 signum() 获取符号值
该方法接收一个 int 参数,返回 int 类型的符号结果:
-
Integer.signum(42)→ 返回 1 -
Integer.signum(-7)→ 返回 -1 -
Integer.signum(0)→ 返回 0
注意:它只接受 int 类型;若需处理 long、double 等,应使用对应包装类的静态方法(如 Long.signum()、Double.signum())。
替代冗长的条件判断
不用再写:
立即学习“Java免费学习笔记(深入)”;
int sign = (x > 0) ? 1 : (x < 0) ? -1 : 0;
直接写:
int sign = Integer.signum(x);
逻辑更清晰,可读性更高,也避免了因括号或优先级导致的潜在错误。
常用于排序、比较器和归一化场景
例如在自定义比较逻辑中:
- 按绝对值升序,但负数优先于正数:
Integer.signum(a) != Integer.signum(b) ? Integer.signum(a) - Integer.signum(b) : Integer.compare(Math.abs(a), Math.abs(b)) - 实现向零取整的符号保留:配合
Math.abs()和乘法还原符号
它天然适配需要“符号方向”而非具体数值的场合,比如方向判断、增量控制、坐标轴移动等。
注意边界与 null 安全
Integer.signum() 接收的是基本类型 int,所以传入 null 会触发自动拆箱异常(NullPointerException)。如果变量是 Integer 对象,建议先判空:
Integer value = ...; int sign = (value == null) ? 0 : Integer.signum(value);
或者用 Objects.requireNonNullElse(value, 0) 配合调用。


















