ホームページ >Java >&#&チュートリアル >論理演算子: `|` ではなく `||` を選択する必要があるのはどのような場合ですか?

論理演算子: `|` ではなく `||` を選択する必要があるのはどのような場合ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-09 11:16:07683ブラウズ

Logical Operators: When Should You Choose `||` Over `|`?

論理演算子の利点: || を使用する理由over |?

プログラミングでは、論理演算子を使用してブール式を組み合わせることがよくあります。最も一般的な 2 つの論理演算子は、論理 OR 演算子 (||) とビットごとの OR 演算子 (|) です。どちらの演算子も同様の機能を実行しますが、|| を決定する重要な違いがあります。ほとんどのシナリオで推奨される選択肢です。

ビット単位の OR 演算子 (|) はビット単位の演算を実行し、2 つの入力ブール値の各ビットを評価し、結果をビットごとに返します。対照的に、論理 OR 演算子 (||) は入力ブール値を順番に評価し、そのうちの 1 つが true と評価されるとすぐに停止します。これはショートサーキットとして知られています。

ショートサーキットには、ビット単位の操作に比べていくつかの利点があります。まず、左側のオペランドがすでに true である場合に、右側のオペランドが不必要に評価されるのを防ぎます。これにより、特に右側のオペランドが負荷の高い操作である場合、パフォーマンスが向上します。

たとえば、次のコード スニペットを考えてみましょう。

Boolean b = true;
if (b || foo.timeConsumingCall()) {
    // We entered without calling timeConsumingCall()
}

ここでは || を使用しています。左側のオペランド (b) がすでに true であるため、関数 foo.timeConsumingCall() が呼び出されないようにします。これは、計算量の多い操作を扱う場合に非常に重要です。

ショートサーキットのもう 1 つの利点は、null 参照のチェックです。入力ブール値の 1 つが null 値の場合、&& を使用して偽りをチェックすると NullPointerException が発生します。一方、||エラーを引き起こすことなく false と評価されます。例:

String string = null;
if (string != null && string.isEmpty()) {
    // We check for string being null before calling isEmpty()
}

この場合、&& を使用すると NullPointerException がスローされますが、||

要約すると、 || はどちらも正しく false と評価されます。と | || を使用して論理演算に使用できます。短絡動作のため、一般に好まれます。短絡によりパフォーマンスが向上し、より安全な null 参照チェックが可能になるため、ほとんどのプログラミング シナリオにとってより適切な選択肢となります。

以上が論理演算子: `|` ではなく `||` を選択する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。