-5

現在、OCA Java SE 7 Programmer I Study Guide を読んでいますが、例を理解するのに助けが必要です。コードは次のとおりです。

boolean b;
    boolean bValue = (b = true);
    //Evaluates to true

    if(bValue)
        System.out.println("TRUE");
    else
        System.out.println("FALSE");

    if (bValue = false)
        System.out.println("TRUE");
    else
        System.out.println("FALSE");

    if(bValue == false)
        System.out.println("TRUE");
    else
        System.out.println("FALSE");

このコードで問題が発生しているのは、2 番目の出力です。なぜそれは嘘で真実ではないのですか?
bValue が false になり、「FALSE」を表示することを意味する if を満たさない場合ですか?

編集: = と == の違いを知っています。私が理解できないのは、「TRUE」と出力すべきではないということですか?

前もって感謝します。

4

4 に答える 4

4

代入bValue = falseは equals の演算子メソッドを呼び出します。equals 演算子は右側の値を返します。これは、等号演算子を連鎖できるようにするためです。

boolean foo;
boolean bar;
foo = bar = false;

ではbValue = false、equals 演算子の結果は実際に評価されるものなので、false です。

于 2013-10-23T11:31:18.293 に答える
0

falseと比較するのではなく、false で割り当てています。

これが、次のようにコーディングする必要がある理由です。

if (!bValue)

そして、なぜあなたが持っているのはアンチパターンなのですか。

于 2013-10-23T11:27:11.203 に答える