回答:
Boolean
(オブジェクト)のデフォルト値はnull
です。(プリミティブ)
のデフォルト値boolean
はfalse
です。
いずれかのデフォルト値はObject
、のようなBoolean
、ですnull
。
aのデフォルト値boolean
はfalseです。
注:すべてのプリミティブにはラッパークラスがあります。すべてのラッパーは、デフォルトのを持つ参照を使用しますnull
。プリミティブにはさまざまなデフォルト値があります。
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
注(2): void
ラッパーVoid
があり、これにもデフォルトのがnull
あり、可能な値のみです(ハックを使用しない)。
Boolean
されObject
、それが最初の行が明らかに意味になるだろう。これはかなり基本的なことのように聞こえますが、このような基本的な質問をする人にとっては役立つかもしれません。
booleanまたはにする
ことができます。
デフォルト値はです。true
false
false
(出典:Javaプリミティブ変数)
ブール値
を指定できBoolean
、オブジェクトが表すtrue
かfalse
、またはことができますnull
。
デフォルト値はnull
です。
質問する必要がある場合は、フィールド/変数を明示的に初期化する必要があります。これを調べる必要がある場合、他の誰かがそれを行う必要がある可能性があるためです。
ここboolean
に見られるように、プリミティブの値はfalse です。
他の人が述べたように、aの値はBoolean
デフォルトでnullになります。
ブール値はオブジェクトです。したがって、インスタンス変数の場合はnullになります。メソッド内で宣言されている場合は、初期化する必要があります。そうしないと、コンパイラエラーが発生します。
プリミティブ、つまりブール値として宣言した場合。インスタンス変数(またはクラス変数)の場合、値はデフォルトでfalseになります。メソッド内で宣言されている場合でも、trueまたはfalseに初期化する必要があります。そうしないと、コンパイラエラーが発生します。
のデフォルトはありませんBoolean
。またはBoolean
で構築する必要があります。オブジェクトが初期化されていない場合は、を指します。boolean
String
null
プリミティブのデフォルト値はboolean
ですfalse
。
http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
null
ます。null
がデフォルトなので、存在しないと言ったときに何を参照しているかはわかりません。(もしかして、「Boolean
どちらtrue
でもないfalse
、デフォルトではない」のような意味ですか?)
class BooleanTester
{
boolean primitive;
Boolean object;
public static void main(String[] args) {
BooleanTester booleanTester = new BooleanTester();
System.out.println("primitive: " + booleanTester.getPrimitive());
System.out.println("object: " + booleanTester.getObject());
}
public boolean getPrimitive() {
return primitive;
}
public Boolean getObject() {
return object;
}
}
出力:
primitive: false
object: null
これは明らかなようですが、JacksonがオブジェクトをJSONにシリアル化しているときに、ゲッターを呼び出した後にNPEをスローして、割り当てられていないプリミティブブール値を返すという状況がありました。これにより、Jacksonがnullを受信し、そのメソッド、つまりNPEを呼び出そうとしていると思いました。私は間違っていた。
物語の教訓は、Javaがメモリをプリミティブに割り当てるとき、そのメモリは初期化されていなくても値を持ち、Javaはブール値の場合はfalseに相当するということです。対照的に、ブール値などの初期化されていない複雑なオブジェクトにメモリを割り当てる場合は、オブジェクト自体ではなく、そのオブジェクトへの参照にスペースのみが割り当てられます。参照するメモリ内にオブジェクトがないため、その参照を解決するとnullになります。
厳密に言えば、「デフォルトでfalseになっている」というのは少しおかしいと思います。Javaはメモリを割り当てず、明示的に設定されるまでfalseの値を割り当てません。私はJavaがメモリを割り当てると思います、そしてメモリが持つどんな値も「偽」の値と同じです。しかし、実際には同じです。