ブール論理演算子 && (条件付き And) と || の動作(Conditional-Or) はよく知られているように思えるかもしれませんが、対応する & (Bitwise-And) および | が存在します。 (Bitwise-Or)、これには注意が必要です。これらのビット単位の演算子は、ビットレベルで動作し、異なるルールのセットを提供します。
その機能を理解するために次の例を検討してください。
int a = 6; // Binary: 110 int b = 4; // Binary: 100 // Bitwise AND int c = a & b; // 110 // & 100 // ----- // 100 // Bitwise OR int d = a | b; // 110 // | 100 // ----- // 110 System.out.println(c); // Output: 4 System.out.println(d); // Output: 6
このデモでは、ビット単位の演算子は次のことを実行します。入力整数の対応する各ビットに対して論理演算を実行し、値が変更されます。ビットごとの AND (&) とビットごとの OR (|) は、それらの論理的な対応物とは異なり、入力を 0 と 1 のシーケンスとして考慮してビットレベルで動作します。
&& に注意することが重要です。そして ||オペレータは「短絡」ルールに従います。これは、最初の条件がそれぞれ false または true と評価された場合、2 番目の条件の評価がスキップされ、潜在的なエラーや例外が効果的に防止されることを意味します。
逆に、& および |このような動作をしないでください。これらは、句内のすべての条件を注意深く検査し、前の条件の結果に関係なく、提供されたすべての式を評価します。この区別は、次の例に示すように、式の 1 つで例外が発生する可能性がある場合に重要になります。
int a = null; if ((a != null) & (a.something == 3)) { // Safe: 'a.something' will not be evaluated if 'a' is null } if ((a != null) & (a.something == 3)) { // Unsafe: 'a.something' will be evaluated even if 'a' is null, potentially raising an exception }
ブール演算子のこれらの基本的な違いを理解することで、コード内でそれらの力を効果的に活用し、正しい演算子を保証することができます。最適化された動作。
以上がJava のブール演算子 `&&`/`||` とビット演算子 `&`/`|` の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。