我应该用两个if语句分开AND吗?

Joh*_*wel 1 java optimization if-statement

我的代码中有以下几行:

    if (command.equals("sort") && args.length == 2) {
    //run some program
    }
Run Code Online (Sandbox Code Playgroud)

有人建议我应该使用两个单独的if语句,因为if如果命令不等于"sort",则无需评估任何其他语句,无论args长度是否正确.

所以根据这一点,我需要将我的代码重写为:

if (command.equals("sort")) {
  if (args.length == 2) {
    //run some program
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Roo*_*ahi 14

不,那不是真的.他们称之为short circuit,如果第一个条件评估为假,则第二个条件根本不会被评估.

  • 使用AND运算符.因为您可以更轻松地阅读代码.这是来自WikiPedia:"这两种情况之间在计算效率方面的差异在很大程度上取决于所使用的编译器和优化方案;通过适当的优化,它们将以相同的速度执行,因为它们将被编译为相同的机器代码":http: //en.wikipedia.org/wiki/Short-circuit_evaluation (2认同)

Roh*_*ain 7

好吧,既然&&short-circuit运营商.所以这两个if陈述实际上都是一样的.

因此,在第一种情况下,如果您的command.equals("sort"),返回false,则根本不会评估以下条件.因此,在我看来,只需要使用第一个.它更清楚.