Java prüft, ob der Boolesche Wert null ist


73

Wie prüft man, ob ein Boolescher Wert null ist oder nicht? Wenn ich also weiß, dass "hideInNav" null ist. Wie kann ich verhindern, dass es weiter ausgeführt wird? So etwas wie das Folgende scheint nicht zu funktionieren, aber warum?

boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";

Antworten:


123

booleankann nur sein trueoder falseweil es sich um einen primitiven Datentyp handelt (+ ein booleanStandardwert für Variablen ist false). Sie können die Klasse Booleanstattdessen verwenden, wenn Sie nullWerte verwenden möchten . Boolean ist ein Referenztyp. Aus diesem Grund können Sie nulleiner booleschen "Variablen" zuweisen . Beispiel:

Boolean testvar = null;
if (testvar == null) { ...}

Könnte ich also etwas tun wie: ** Boolean hideInNav = parent.getProperties (). Get ("hideInNav", false); if (hideInNav! = null) {etwas tun} **
Delmon Young

1
Ja, denn dann hideInNaventhält eine Referenz auf ein BooleanObjekt und kann sein null(keine Referenz zugewiesen). Daher können Sie überprüfen, ob die Referenz ist null.
Eich

1
BooleanUtils.isTrue (java.lang.Boolean bool) ist das, was ich verwende, um seinen Status in der Bedingung zu überprüfen, da Boolean null sein kann. commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/…
Youness

Ohne Apache Commons:Boolean.TRUE.equals(xxx)
Eich

54

A booleankann nicht nullin Java sein.

A Booleankann jedoch sein null.

Wenn a booleankein Wert zugewiesen wird (z. B. ein Mitglied einer Klasse), ist dies falsestandardmäßig der Fall .


Richtige Erklärung, danke.
Sajid Khan

9

Das einzige, was ein sein kann, nullist ein Nicht-Primivit.

A, booleandas nur halten kann TRUEoder FALSEein Primitiv ist. Das TRUE/ FALSEim Speicher sind tatsächlich Zahlen ( 0und 1)

0 = FALSE

1 = WAHR

Wenn Sie also ein Objekt instanziieren, ist es null String str; // will equal null

Wenn Sie dagegen ein Grundelement instanziieren, wird es dem Standardwert 0 zugewiesen.

boolean isTrue; // will be 0

int i; // will be 0


2
Die Großschreibung von Booleanin "A Booleanwelches ..." ist unglücklich. Eine Variable vom Typ booleankann nur trueund enthalten false, aber eine Variable vom Typ kann Booleanein BooleanObjekt enthalten, oder null.
Joshua Taylor

7

nullGilt in Java nur für Objektreferenzen. Da booleanes sich um einen primitiven Typ handelt, kann er nicht zugewiesen werden null.

Es ist schwierig, aus Ihrem Beispiel einen Kontext zu erhalten, aber ich vermute, dass hideInNavder von getProperties()Ihnen angegebene (Standardwert?) Ist, wenn er nicht in dem von zurückgegebenen Objekt enthalten ist false. Ich vermute , dass dies der Fehler ist , dass Sie sehen, wie falsenicht zu gleich null, so hideNavigationwird die leere Zeichenfolge zu bekommen?

Möglicherweise erhalten Sie bessere Antworten mit etwas mehr Kontext für Ihr Codebeispiel.


6

boolean ist ein primitiver Typ und kann daher nicht null sein.

Sein Box-Typ Booleankann null sein.

Die Funktion gibt wahrscheinlich a Booleanim Gegensatz zu a zurück boolean. Wenn Sie das Ergebnis also einer BooleanVariablen vom Typ -type zuweisen , können Sie die Nichtigkeit testen.


4

nullist ein Wert, der einem Referenztyp zugewiesen ist. nullist ein reservierter Wert, der angibt, dass eine Referenz keiner Instanz eines Objekts ähnelt.

A booleanist keine Instanz eines Objekts. Es ist ein primitiver Typ, wie intund float. Auf die gleiche Weise wie: int xhat einen Wert von 0, boolean xhat einen Wert von false.


Einverstanden. Nicht die beste Zeit für Rechtschreibfehler! Schnelle Bearbeitung :)
Christopher

0

boolean ist ein primitiver Datentyp in Java und primitive Datentypen können nicht wie andere primitive int, float usw. null sein. Sie sollten Standardwerte enthalten, wenn sie nicht zugewiesen sind.

In Java können nur Objekte null zugewiesen werden. Dies bedeutet, dass das entsprechende Objekt keine Referenz hat und daher keine Darstellung im Speicher enthält.

Wenn Sie also mit einem Objekt als Null arbeiten möchten , sollten Sie die Boolesche Klasse verwenden, die einen primitiven booleschen Typwert in das Objekt einschließt.

Diese werden in Java als Wrapper-Klassen bezeichnet

Zum Beispiel:

Boolean bool = readValue(...); // Read Your Value
if (bool  == null) { do This ...}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.