Was sind die Standardwerte von boolean
(primitiv) und Boolean
(primitiv Wrapper) in Java?
java
boolean
default-value
Makky
quelle
quelle
Der Standardwert für jede
Object
, wieBoolean
istnull
.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:Hinweis (2):
void
hat einen Wrapper,Void
der ebenfalls den Standardwert hatnull
und nur ein möglicher Wert ist (ohne Verwendung von Hacks).quelle
Boolean
istObject
, 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
oderfalse
.Standardwert ist
false
.(Quelle: Java Primitive Variables )
Boolean
Kann ein
Boolean
Objekt sein, dastrue
oder darstelltfalse
, oder kann seinnull
.Standardwert ist
null
.quelle
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.quelle
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.
quelle
Ein nicht initialisiertes
Boolean
Mitglied (eigentlich ein Verweis auf ein Objekt vom TypBoolean
) hat den Standardwertnull
.Ein nicht initialisiertes
boolean
(primitives) Mitglied hat den Standardwertfalse
.quelle
Es gibt keine Standardeinstellung für
Boolean
.Boolean
muss mit aboolean
oder a konstruiert werdenString
. Wenn das Objekt nicht initialisiert ist, würde es auf zeigennull
.Der Standardwert des Grundelements
boolean
istfalse
.http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
quelle
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 wedertrue
nochfalse
standardmäßig"?)Ausgabe:
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.
quelle