我只是想知道其中一个代码是否比另一个更受欢迎。
例如:
boolean even;
if (number % 2 == 0)
even = true;
else
even = false;
替代代码:
boolean even = (number % 2 == 0);
我认为其中一个是优先于另一个因为一个更短,但我觉得第一个代码更容易阅读(作为初学者)。我只想知道真正的答案,为什么一个人优先于另一个人,或者即使一个人优先于另一个人呢?
答案 0 :(得分:2)
我会选择第二个,因为你避开了一个分支。在第一种情况下,您有一个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
然而,这只是一种可能性,而最有可能并非如此。