1

我只是想知道这些代码中的一个是否比另一个更受欢迎。

例如:

boolean even;

if (number % 2 == 0)
   even = true;
else
   even = false;

备用代码:

boolean even = (number % 2 == 0);

我在想一个比另一个更受欢迎,因为一个更短,但我觉得第一个代码更容易阅读(作为初学者)。我只是想知道为什么一个人比另一个人更受欢迎,或者即使一个人比另一个人更受欢迎的真正答案?

4

1 回答 1

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

但是,这只是一种可能性,很可能并非如此。

于 2013-10-15T16:50:14.260 回答