Antworten:
Der Standardwert für ein Boolean
(Objekt) ist null
.
Der Standardwert für a boolean
(primitiv) ist false
.
Der Standardwert für jede Object
, wie Boolean
ist null
.
Der Standardwert für a boolean
ist false.
Hinweis: Jedes Grundelement verfügt über eine Wrapper-Klasse. Jeder Wrapper verwendet eine Referenz mit dem Standardwert null
. Grundelemente haben unterschiedliche Standardwerte:
boolean -> false
byte, char, short, int, long -> 0
float, double -> 0.0
Hinweis (2): void
hat einen Wrapper, Void
der ebenfalls den Standardwert hat null
und nur ein möglicher Wert ist (ohne Verwendung von Hacks).
Boolean
ist Object
, das wäre die erste Linie bedeutet offensichtlich machen. Das klingt ziemlich einfach, aber für jemanden, der eine grundlegende Frage wie diese stellt, kann es hilfreich sein.
boolean
Kann sein true
oder false
.
Standardwert ist false
.
(Quelle: Java Primitive Variables )
Boolean
Kann ein Boolean
Objekt sein, das true
oder darstellt false
, oder kann sein null
.
Standardwert ist null
.
Wenn Sie fragen müssen, müssen Sie Ihre Felder / Variablen explizit initialisieren, denn wenn Sie nachschlagen müssen, muss dies wahrscheinlich auch jemand anderes tun.
Der Wert für ein Grundelement boolean
ist falsch, wie hier zu sehen ist .
Wie von anderen erwähnt, ist der Wert für a Boolean
standardmäßig null.
Boolean ist ein Objekt. Wenn es sich also um eine Instanzvariable handelt, ist sie null. Wenn es innerhalb einer Methode deklariert ist, müssen Sie es initialisieren, da sonst ein Compilerfehler auftritt.
Wenn Sie als primitiv deklarieren, dh boolesch. Der Wert ist standardmäßig falsch, wenn es sich um eine Instanzvariable (oder Klassenvariable) handelt. Wenn es innerhalb einer Methode deklariert ist, müssen Sie es weiterhin entweder auf true oder false initialisieren, da sonst ein Compilerfehler auftritt.
Es gibt keine Standardeinstellung für Boolean
. Boolean
muss mit a boolean
oder a konstruiert werden String
. Wenn das Objekt nicht initialisiert ist, würde es auf zeigen null
.
Der Standardwert des Grundelements boolean
ist 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
ist die Standardeinstellung, daher bin ich mir nicht sicher, worauf Sie sich beziehen, wenn Sie sagen, dass es keine gibt. (Meinten Sie vielleicht etwas wie " Boolean
ist weder true
noch false
standardmäßig"?)
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;
}
}
Ausgabe:
primitive: false
object: null
Dies scheint offensichtlich, aber ich hatte eine Situation, in der Jackson beim Serialisieren eines Objekts in JSON eine NPE auslöste, nachdem er einen Getter wie diesen aufgerufen hatte, der einen primitiven Booleschen Wert zurückgibt, der nicht zugewiesen wurde. Dies führte mich zu der Annahme, dass Jackson eine Null erhielt und versuchte, eine Methode darauf aufzurufen, daher die NPE. Ich lag falsch.
Die Moral der Geschichte ist, dass wenn Java Speicher für ein Primitiv zuweist, dieser Speicher einen Wert hat, auch wenn er nicht initialisiert ist, was Java für einen Booleschen Wert mit false gleichsetzt. Im Gegensatz dazu wird beim Zuweisen von Speicher für ein nicht initialisiertes komplexes Objekt wie einen Booleschen Wert nur Speicherplatz für eine Referenz auf dieses Objekt zugewiesen, nicht für das Objekt selbst - es gibt kein Objekt im Speicher, auf das Bezug genommen werden kann. Wenn Sie also diese Referenz auflösen, erhalten Sie null.
Ich denke, dass "standardmäßig falsch" ein wenig daneben liegt. Ich denke, Java weist den Speicher nicht zu und weist ihm den Wert false zu, bis er explizit festgelegt wird. Ich denke, Java weist den Speicher zu und jeder Wert, den dieser Speicher hat, ist der gleiche wie der Wert von 'false'. Aber aus praktischen Gründen sind sie dasselbe.