Boolean.FALSE oder neu Boolean (false)?

8

Ich sah in der Quelle der Booleschen Klasse Folgendes:

%Vor%

Wenn ich also richtig verstanden habe, ist das Feld FALSE in der Klasse Boolean ein Boolean selbst, dessen boolean -Feld auf false gesetzt ist.

Nun frage ich mich, ob die folgenden zwei Aussagen wirklich äquivalent sind.

%Vor%

und

%Vor%

Ich würde annehmen, dass im ersten Fall ein neues boolesches Objekt konstruiert wird und die myBool-Referenz darauf zeigt, während wir im zweiten Fall tatsächlich eine Kopie der Referenz auf das Boolean.FALSE-Objekt erstellen - ist das korrekt?

Und wenn ja, was bedeutet dieser Unterschied wirklich ?

Last but not least die aktuelle Frage: Welche der beiden Optionen sollte ich bevorzugen und warum?

    
dingalapadum 08.10.2015, 11:31
quelle

2 Antworten

3

Der Unterschied:

%Vor%

(boolesch) wahr

%Vor%

(boolean) falsch

Verwenden Sie

%Vor%

und lassen Sie Autoboxing damit umgehen.

    
Jiri Tousek 08.10.2015 11:45
quelle
1

Sie sollten Boolean.FALSE verwenden, anstatt ein neues Objekt im Heap zu erstellen, da dies unnötig ist. Wir sollten dieses statische finale Objekt als Speicher verwenden und es ist sogar schneller, darauf zuzugreifen.

Und ja, Sie haben Recht:

  

Im ersten Fall wird ein neues boolesches Objekt konstruiert und das myBool   Referenzpunkte dazu

Aber im zweiten Fall zeigen wir nur auf das existierende Objekt.

Und Ihre andere Frage, während wir Boolean.FALSE haben, warum wir die Option haben, new Boolean (false) der Grund ist, dass es ein Konstruktor ist. Angenommen, Sie haben eine einfache boolesche Variable x und wissen nicht, ob es wahr oder falsch ist und Sie ein entsprechendes boolesches Objekt wollen, dann wird dieser Konstruktor verwendet, um diese boolesche Grundvariable x an Boolean-Objekt zu übergeben.

    
proudandhonour 08.10.2015 11:38
quelle

Tags und Links