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
相关产品推荐
相关产品推荐

