当前位置: 首页 > 面试题库 >

Java Integer compareTo()-为什么要使用比较与减法?

林意蕴
2023-03-14
问题内容

我发现该方法的java.lang.Integer实现compareTo如下所示:

public int compareTo(Integer anotherInteger) {
    int thisVal = this.value;
    int anotherVal = anotherInteger.value;
    return (thisVal<anotherVal ? -1 : (thisVal==anotherVal ? 0 : 1));
}

问题是为什么使用比较而不是减法:

return thisVal - anotherVal;

问题答案:

这是由于整数溢出。当thisVal非常大且anotherVal为负数时,则从前者中减去后者会产生大于thisVal可能溢出至负数范围的结果。



 类似资料:
  • 问题内容: 在JBox2d中,存在以下代码: 我想知道这里的float <-> int位转换函数的作用是什么。这是否提供解决Java的float比较不准确性问题的方法(如果可能的话)?还是完全不同?我想知道它是否可以替代epsilon方法: PS。为了完整和有趣,这里是: 仅供参考,我可以完美地理解为什么在hashCode()中使用转换函数-哈希ID必须是整数。 问题答案: 解释中可以找到约书亚B

  • 问题内容: Java新手。在Android应用程序上工作时进行学习。我正在实现一个Comparator来对文件列表进行排序,而android docs 说一个Comparator应该实现Serializable: 建议比较器实现可序列化。 这是这里的Serializable接口。 我只想对文件列表进行排序。我为什么要实施此方法,或者为什么对任何比较器都应采用该方法? 问题答案: 这不仅是Andro

  • 问题内容: 编辑:好的,好的,我读错了。我没有将int与Integer进行比较。适当注意。 我的SCJP书说: 当==用于将原语与包装器进行比较时,包装器将被展开,并且比较将是原语与原始的比较。 因此,您会认为此代码将打印: 但它打印。 另外,根据我的书,这应该打印: 不。是。 是什么赋予了? 问题答案: 当您为该值分配1时,将装箱,创建一个对象。然后比较比较两个对象引用。引用不相等,因此比较失败

  • 问题内容: 我真的是数据库新手,并且对一些高级基础知识感兴趣。我已经阅读了这篇精彩的SO文章。在某些情况下,我比别人更好,但不确定为什么。 为什么在联接操作中MySQL比MongoDB快? 为什么MongoDB在分布式系统中可以更好地扩展? 如果我“只是选择一堆表并将所有对象放在一起,这就是大多数人在Web应用程序中所做的事情”,为什么MongoDB会更快? 非常感谢! 问题答案: 这个问题没有任

  • 通过运行下面的代码,我可以直接与if语句进行比较,速度几乎是使用max函数的4倍。 我试图理解这背后的原因。 对比:0.63秒,最大:2.3秒

  • 本文向大家介绍为什么要使用 kafka,为什么要使用消息队列?相关面试题,主要包含被问及为什么要使用 kafka,为什么要使用消息队列?时的应答技巧和注意事项,需要的朋友参考一下 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性:项目开始的