4

x2つのブールオブジェクトがあり、それらのいずれかをy使用できる場合、Javaで考えると述べたように、なぜ両方のタイプが必要なのですか?x= x&&yx=x&y

4

4 に答える 4

12

2 つの演算子の動作は異なります。

  • &常に両方のオペランドを評価します
  • &&ショートサーキットです- 最初のオペランドが に評価されたfalse場合、全体的な結果は常に false になり、2 番目のオペランドは評価されません

詳細については、Java 言語仕様を参照してください。

于 2012-11-26T12:49:38.037 に答える
3

このコードの出力を見てください。

    int x = 0;
    boolean b = false & (++x == 1); // b is false
    System.out.println(x); // prints 1
    x = 0;
    b = false && (++x == 1); // b is false
    System.out.println(x); // prints 0

&は常に両方のオペランドを評価するため、異なります&&が、最初のオペランドが 2 番目のオペランドである場合は、2 番目のオペランドが何であれ、false式全体が常に評価されるため、2 番目のオペランドを調べません。false

于 2012-11-26T12:50:18.787 に答える
2
  1. &両方のオペランドを評価します
  2. &&最初のオペランドが false の場合、2 番目のオペランドの評価をスキップします
于 2012-11-26T12:50:27.710 に答える
1

& はビット単位の「and」演算子、&& はブール値の「and」です。

& は常に左辺と右辺の両方を評価し、 && は式を評価するのに十分な場合にのみ左辺を評価します (たとえば、 false && true : LHS のみが評価されます。LHS が false の場合、式全体が false でなければならないためです)。

于 2012-11-26T12:53:35.000 に答える