我只是想知道这些代码中的一个是否比另一个更受欢迎。
例如:
boolean even;
if (number % 2 == 0)
even = true;
else
even = false;
备用代码:
boolean even = (number % 2 == 0);
我在想一个比另一个更受欢迎,因为一个更短,但我觉得第一个代码更容易阅读(作为初学者)。我只是想知道为什么一个人比另一个人更受欢迎,或者即使一个人比另一个人更受欢迎的真正答案?
我只是想知道这些代码中的一个是否比另一个更受欢迎。
例如:
boolean even;
if (number % 2 == 0)
even = true;
else
even = false;
备用代码:
boolean even = (number % 2 == 0);
我在想一个比另一个更受欢迎,因为一个更短,但我觉得第一个代码更容易阅读(作为初学者)。我只是想知道为什么一个人比另一个人更受欢迎,或者即使一个人比另一个人更受欢迎的真正答案?
我会选择第二个,因为您避免使用分支。在第一种情况下,您有一个if-else
构造。这意味着您的代码中有一个分支。第二个示例在代码中没有分支,这提高了可读性。
正如@Dev 指出的那样,当您将Java 源代码编译为字节码时,不幸的是它会生成一个分支。
从技术上讲,编译器可以选择在汇编中做这样的事情:
TEST eax ; test for zero of "number % 2"
PUSHF ; push flag-registers to the stack
POP ebx ; pop them into a register
SHR ebx,?? ; shift to the FZ flag
AND ebx,1 ; cancel out the other flags
但是,这只是一种可能性,很可能并非如此。