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?
Der Unterschied:
%Vor%(boolesch) wahr
%Vor%(boolean) falsch
Verwenden Sie
%Vor%und lassen Sie Autoboxing damit umgehen.
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.
Tags und Links java coding-style boolean