1

これらのコードのいずれかが別のコードよりも優先されるかどうか疑問に思っていました.

例えば:

boolean even;

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

代替コード:

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

こっちの方が短いからどっちがいいのかなと思っていたのですが、(初心者なので)最初の方が読みやすい気がします。なぜ一方が他方よりも優先されるのか、または一方が他方よりも優先されるのかについての本当の答えを知りたいだけですか?

4

1 に答える 1

2

あなたは分岐を避けるので、私は2番目のものに行きます。最初のケースでは、if-else構造があります。これは、コードにブランチがあることを意味します。2 番目の例では、コードに分岐がないため、読みやすくなっています。

@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 に答える