You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Integer.compare是否会返回-1、0、1以外的数值?

Integer.compare返回值范围及compareTo重写问题解答

问题1:Integer.compare(a,b)是否可能返回-1、0、1之外的值?

不会。查看Java中Integer.compare(int x, int y)的源码实现:

public static int compare(int x, int y) {
    return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

从源码可以明确看到,该方法只会返回**-1、0、1**这三个值,绝不会出现-5这类其他数值。

至于文档中描述“a小于b时返回小于0的值,a大于b时返回大于0的值”,这是因为Comparator.compare接口的通用规范要求如此——只要返回值的符号符合逻辑即可,而Integer.compare选择了最简洁的-1、0、1来满足这个规范,属于合规的具体实现。

问题2:重写compareTo时使用Integer.compare,能否保证返回值仅为-1、0、1?

完全可以。因为Integer.compare的返回值严格限定在-1、0、1,基于它实现的compareTo方法,只要逻辑正确,最终返回值也只会是这三个值,完全满足你对返回值范围的要求。

内容的提问来源于stack exchange,提问作者ilLuc1an

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:19:53