私は単純なif/elseを使ってJavaで偶数を調べるために別の値を返そうとしています。Javaで効率的なif/elseとは何ですか?
if (move % 2 == 0) {
return "o";
} else {
return "O";
}
私はJavaScriptであなたが
if() : a ? b ;
を使用することができます知っているが、これはJavaで使用することはできますか?
私は単純なif/elseを使ってJavaで偶数を調べるために別の値を返そうとしています。Javaで効率的なif/elseとは何ですか?
if (move % 2 == 0) {
return "o";
} else {
return "O";
}
私はJavaScriptであなたが
if() : a ? b ;
を使用することができます知っているが、これはJavaで使用することはできますか?
はい、あなたはJavaで三項演算子を使用することができます。
return (move % 2 == 0) ? "o" : "O";
はちょうどそれがどの速くif
よりであることを期待していない - else
。
私はちょうど数行のコードを減らしたかっただけです。すべての回答をありがとう。 – Aaron
はい、あなたはJavaでconditional operatorを使用することができます。
return (move % 2 == 0) ? "o": "O";
それはどんなより速くあなたのプログラムをすることはありませんが、それはもう少し簡潔だとあなたは条件演算子に精通している場合、あなたはおそらく意志読むのが簡単です。
逆に、がこの演算子を知らないと、コードが何をするのかを推測することが難しくなります。
(conditional) ? if-true-statement : if-false-statement;
はい、それは、Ternary Operators
はいすることができますのためにWikipediaのページをチェックアウトすることができます。
true ? case1 : case2; // returns case1
false ? case1 : case2; // returns case2
それはそれを使用する方法のかなり悪い例です。 –
あなたは多かれ少なかれ効率的な方法でif文を使用することができる方法はありません:それはternary operator
使用法と呼ばれています。
...と、さらに多くの - ことを覚えておいて、これが唯一のif文には適用されません。
あなたはパフォーマンス上の理由から、使用される式を最適化しようとすることはありません - 焦点を当ててコードを書きます可読性(および保守性)を重視しています。これは、バイトコードを最適化し、バイトコードで指定した命令を変更するJIT(ジャストインタイムコンパイラ)があるためです。
三項演算子を使用することを考えている場合は、コードを理解することが難しくなります(複数の人がコードを操作している場合)。それはちょうどあなたがコードに取り組んでいる場合、あなたのようにしてくださいません - はい:
Object var = boolean-expression ? some-value : another-value;
がはるかにコンパクトより:
Object var;
if (boolean-expression)
var = some-value;
else
var = another-value;
代わりの三項演算子?
対if
を「最適化」しますmove % 2 == 0
に注目する必要があります。move
が整数ではなく浮動小数点変数である場合は、このは高速であってもよい。
if(move & 1 == 0)
return "E";
else
return "O";
ビット操作は、通常、分割又はモジュロ計算よりも高速です。
あなたが本当にこれはかなり怪しげである、疑いの余地なく、高速にする必要がある場合、あなたはまた、ルックアップテーブルを考慮する必要があります。
static final char[] moveChar = {"o", "O"};
// ...
return moveChar[move % 2];
しかし、私はそれらをタイミングなしに、ここで与えられた提案のいずれかを実装していないだろう、あなたが今持っているものが実際にボトルネックであることが証明されるまで、私は何もしません。これはCPU時間の約50%以上を消費することを意味します。
'if'と' else'はかなり効率的です... –
3進: 'return(move%2 == 0)? "o": "O"; ' - しかしそれはあなたのものと同等ですが、簡潔にするために非常に短い' if-else'文に役立ちます。 (これは編集されました) – birryree
できません: 'return(move%2 == 0)? "o": "O"; ' – Blender