Java の「&」と「&&」の違いを理解する
Java では、「&」演算子は伝統的に整数に対するビット単位の演算。しかし、最近、この演算子がブール演算も実行できることが明らかになり、「&&」演算子との併用に疑問が生じています。
「&」と「&&」は両方ともブール オペランドの真実性を検証しますが、次の点で異なります。彼らの評価ロジック。 「&&」は遅延評価を実行します。つまり、左側 (LHS) オペランドが true の場合に右側 (RHS) オペランドのみが評価されます。これにより、LHS オペランドが false の場合、RHS オペランドは評価されなくなり、不要な計算が回避され、例外の発生が防止される可能性があります。
対照的に、「&」は両方のオペランドを容赦なく評価します。これにより、RHS オペランドが特定の LHS オペランド値に対して適切に定義されていない場合、例外が発生する可能性があります。次の例を考えてみましょう:
if ((x != 0) & (1/x > 1)) { // ... }
「x」が 0 の場合、この式は「1/x」を評価しようとすると例外をスローします。これを防ぐには、代わりに '&&' を使用します。
if ((x != 0) && (1/x > 1)) { // ... }
ここでは、'x' が 0 でない場合にのみ '1/x' の評価を続行し、例外を回避します。
さらに、'|'、'|>'ブール演算子の対応物も同様に動作します。 '|>'最初のオペランドが true と評価されると、結果は常に true になるため、評価を停止します。
「&」と「&&」のこの微妙な違いを理解することは、次のような原因による実行時エラーを回避する効率的で堅牢な Java コードを作成するために重要です。時期尚早の評価。
以上がJava の「&」演算子と「&&」演算子の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。