2011-10-27 5 views
2

私は単純なif/elseを使ってJavaで偶数を調べるために別の値を返そうとしています。Javaで効率的なif/elseとは何ですか?

if (move % 2 == 0) { 
    return "o"; 
} else { 
    return "O"; 
} 

私はJavaScriptであなたが

if() : a ? b ; 

を使用することができます知っているが、これはJavaで使用することはできますか?

+5

'if'と' else'はかなり効率的です... –

+3

3進: 'return(move%2 == 0)? "o": "O"; ' - しかしそれはあなたのものと同等ですが、簡潔にするために非常に短い' if-else'文に役立ちます。 (これは編集されました) – birryree

+2

できません: 'return(move%2 == 0)? "o": "O"; ' – Blender

答えて

11

はい、あなたはJavaで三項演算子を使用することができます。

return (move % 2 == 0) ? "o" : "O"; 

はちょうどそれがどの速くifよりであることを期待していない - else

+0

私はちょうど数行のコードを減らしたかっただけです。すべての回答をありがとう。 – Aaron

3

はい、あなたはJavaでconditional operatorを使用することができます。

return (move % 2 == 0) ? "o": "O"; 

それはどんなより速くあなたのプログラムをすることはありませんが、それはもう少し簡潔だとあなたは条件演算子に精通している場合、あなたはおそらく意志読むのが簡単です。

逆に、がこの演算子を知らないと、コードが何をするのかを推測することが難しくなります。

0

(conditional) ? if-true-statement : if-false-statement;

はい、それは、Ternary Operators

1

はいすることができますのためにWikipediaのページをチェックアウトすることができます。

true ? case1 : case2;    // returns case1 
    false ? case1 : case2;    // returns case2 
+1

それはそれを使用する方法のかなり悪い例です。 –

0

あなたは多かれ少なかれ効率的な方法で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; 
1

代わりの三項演算子?ifを「最適化」しますmove % 2 == 0に注目する必要があります。moveが整数ではなく浮動小数点変数である場合は、この高速であってもよい。

if(move & 1 == 0) 
    return "E"; 
else 
    return "O"; 

ビット操作は、通常、分割又はモジュロ計算よりも高速です。

0

あなたが本当にこれはかなり怪しげである、疑いの余地なく、高速にする必要がある場合、あなたはまた、ルックアップテーブルを考慮する必要があります。

static final char[] moveChar = {"o", "O"}; 
// ... 
return moveChar[move % 2]; 

しかし、私はそれらをタイミングなしに、ここで与えられた提案のいずれかを実装していないだろう、あなたが今持っているものが実際にボトルネックであることが証明されるまで、私は何もしません。これはCPU時間の約50%以上を消費することを意味します。

関連する問題