3

私は次のコードを書きました

Boolean isit;

if(isit== true) {
    System.out.println("isit is true");
} else {
    System.out.println("isit is not false");
}

しかし、それは常にnullですが、default..としてfalseを与える必要があります.

4

7 に答える 7

20

Boolean(大文字に注意してください)として宣言すると、それはオブジェクトであるためnull、デフォルトで.

booleanではなくにするつもりだったと思いますBoolean

さらに、 abooleanを使用すると、次のことができます。

boolean isit;
if (isit) {
    System.out.println("isit is true");
} else {
    System.out.println("isit is false");
}
//prints "isit is false"
于 2013-04-22T13:13:50.217 に答える
10

booleanとの 2 つの状態を持つプリミティブとはtrue異なり、falseラッパーBooleanには の 3 つ目の状態が追加されていnullます。Booleanオブジェクトがであるときnull、それはどちらtrueでもありませんfalse

オブジェクトが と等しいかどうかを比較するとtrue、値は としてラップされBoolean、 と比較されnullます。結果はfalseです。と比較すると同じことが起こりますがfalse、以下のコードは何も出力しません。

Boolean isit = null;
if (isit == true) { // true gets converted to Boolean.TRUE
    System.out.println("isit is true")
}
if (isit == false) { // false gets converted to Boolean.FALSE
    System.out.println("isit is false")
}

フラグに 3 つの状態 ( truefalse、および「未設定」) が必要な場合はBoolean、 ;を使用する必要があります。2 つの状態 (truefalse) だけが必要な場合は、 のプリミティブ データ型を使用する必要がありますboolean

于 2013-04-22T13:18:27.323 に答える
4

ラッパー クラスを使用している場合は、objectそれを値に初期化することを忘れないでくださいdefault。デフォルトでは、すべてのwrapper classオブジェクトが null に初期化されます。

のように初期化する必要があります

  Boolean B =  Boolean.TRUE;   
  Boolean B = true; 

またはプリミティブ値を取る

 boolean isit;  ///default false  
于 2013-04-22T13:14:05.670 に答える
0

この場合、isit-variable の値を true/false のいずれかに初期化する必要があります。そうしないと、コンパイラがコードをコンパイルできなくなります。値を与えずに IF で isit-variable を使用しているためです。Java では、変数を使用する前に初期化する必要があります。

于 2013-04-22T13:33:56.510 に答える
0

Boolean はラッパー クラス オブジェクトです。そしてJava規約としてobject's default value is always null。小文字の b でブール値を使用した場合、それはプリミティブとして呼び出され、デフォルトで値であることを理解しているとおりの値falseです。

于 2013-04-22T13:26:05.637 に答える