ブール演算子の違い: & と &&、| と || 質問する

ブール演算子の違い: & と &&、| と || 質問する

&&とのルールは知っていますが、 と とは||何ですか? 例を挙げて説明してください。&|

ベストアンサー1

これらはビット単位の AND 演算子とビット単位の OR 演算子です。

int a = 6; // 110
int b = 4; // 100

// Bitwise AND    

int c = a & b;
//   110
// & 100
// -----
//   100

// Bitwise OR

int d = a | b;
//   110
// | 100
// -----
//   110

System.out.println(c); // 4
System.out.println(d); // 6

Java言語仕様の適切なセクションを指摘してくれたCarlosに感謝します(15.22.115.22.2) は、入力に基づいたオペレータのさまざまな動作に関するものです。

実際、両方の入力がブール値の場合、演算子はブール論理演算子とみなされ、短絡しないという点を除けば、Conditional-And ( &&) 演算子や Conditional-Or ( ||) 演算子と同様に動作します。したがって、次の例は安全です。

if((a != null) && (a.something == 3)){
}

これではありません:

if((a != null) & (a.something == 3)){
}

「短絡」とは、演算子が必ずしもすべての条件を検査するわけではないことを意味します。上記の例では、は でない&&場合にのみ 2 番目の条件を検査します(そうでない場合、ステートメント全体が false を返し、後続の条件を検査しても意味がありません)。そのため、 のステートメントは例外を発生しないか、または「安全」であると見なされます。anulla.something

演算子&は常に句内のすべての条件を検査するため、上記の例では、が実際に値であるa.something場合に評価され、例外が発生する可能性があります。anull

おすすめ記事