首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在以下if -否则if - if结构的结构中,进行了多少次比较,1或3?

在以下if -否则if - if结构的结构中,进行了多少次比较,1或3?
EN

Stack Overflow用户
提问于 2014-09-27 18:14:54
回答 1查看 62关注 0票数 1

在每次调用compareTo时是否都会进行新的比较,如果是构造,还是进行了单个比较?

代码语言:javascript
复制
public void genericComparisons(Comparable e, Comparable target){
    if(e.compareTo(target) == 0)
       // do this
    else if(e.compareTo(target) > 0)
       // do something else
    else if(e.compareTo(target) < 0)
       // do that
} // end method
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-27 20:37:54

显然可以使用局部变量优化它..。这样的优化总是好的,因为它可以使代码更清晰、更少重复。

但是,假设您的compareTo是一个简单的无副作用的方法,JVM可能会内联它,并且可以为您进行这种优化。我想这就是你真正想知道的。

找出它是不容易的,特别是使用println必须失败,因为JVM可以使您的程序更快,但没有不同的行为。您无法在字节码中看到它,因为这根本不包含优化,它们是在程序运行一段时间时发生的。

JVM也不允许改进编码风格,所以我建议使用局部变量,特别是对于更复杂的表达式。

你的最后一个条件显然是永远正确的,当达到。如果您希望代码系统地、对称地看上去,请使用以下代码

代码语言:javascript
复制
public void genericComparisons(Comparable e, Comparable target) {
    int cmp = e.compareTo(target);
    if (cmp < 0) {
       // less
    } else if (cmp > 0) {
       // greater
    } else {
       // same
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26077682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档