有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java应该用两个if语句分隔和吗?

我的代码中有以下几行:

    if (command.equals("sort") && args.length == 2) {
    //run some program
    }

有人建议我应该使用两个独立的if语句,因为如果命令不等于“sort”,则无需计算任何其他if语句​, 无论args长度是否正确

因此,我需要将代码重写为:

if (command.equals("sort")) {
  if (args.length == 2) {
    //run some program
  }
}

我知道他们都做这项工作,但我的问题是哪一个更好、更高效


共 (4) 个答案

  1. # 1 楼答案

    他们是一样的。对于第一个示例,如果第一个表达式为false,任何现代运行时都会忽略第二个表达式

  2. # 2 楼答案

    如果条件的顺序相同,它们的效率就完全相同

    if (command.equals("sort") && args.length == 2)
    

    如果有命令就会退出。squals(“sort”)返回false和args。长度永远不会被检查。这是&&操作符的short-circuit操作

    归根结底是风格和可读性的问题。在我看来,当你开始在一个if语句中将太多的内容链接在一起时,它可能会变得很难阅读

  3. # 3 楼答案

    不,那不是真的。他们称之为short circuit,如果第一个条件的计算结果为false,那么第二个条件将根本不被计算

  4. # 4 楼答案

    如上所述,短路会导致程序在条件失败时退出if语句,这意味着不会对任何进一步的条件进行评估,因此两种格式的评估方式没有实际差异

    我想指出的是,当几个if语句嵌套在一起时,代码的易读性会受到负面影响,对我来说,这是不嵌套的主要原因。例如:

    if( conditionA && conditionaB && !conditionC ){
        // Do Something
    }
    

    它比:

    if( conditionA ){
        if( conditionB ){
            if( !conditionC ){
                // Do Something
            }
        }
    }
    

    想象一下,有20个嵌套的if语句?当然,这不常见,但也有可能