Java のブール演算子 `&&`/`||` とビット演算子 `&`/`|` の主な違いは何ですか?

Mary-Kate Olsen
リリース: 2024-11-18 21:04:02
オリジナル
996 人が閲覧しました

What's the Key Difference Between Boolean Operators `&&`/`||` and Bitwise Operators `&`/`|` in Java?

ブール演算子の微妙な点を明らかにする: & と && および | vs ||

ブール論理演算子 && (条件付き 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート