論理演算子の利点: || を使用する理由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 サイトの他の関連記事を参照してください。