Frage

So oder für Vergleiche oder Initialisierung einer neuen Variablen, macht es einen Unterschied, welche eine von diesen Sie verwenden?

Ich weiß, dass BigDecimal.ZERO ist eine 1.5-Funktion, so dass ein Anliegen ist, aber vorausgesetzt, ich bin mit 1.5 macht es?

Danke.

War es hilfreich?

Lösung

BigDecimal.ZERO ist eine vordefinierte Konstante und kann daher nicht aus einer Zeichenfolge zur Laufzeit ausgewertet werden muss als BigDecimal("0") sein würde. Es wird schneller und wird nicht die Schaffung eines neuen Objekts erforderlich ist.

Wenn Ihr Code auf Pre-1.5 ausgeführt werden muss, dann können Sie die (viel geschmähte) Singleton-Muster verwenden, um ein Objekt äquivalent zu erstellen, um BigDecimal.ZERO. Das erste Mal verwendet wird, würde es BigDecimal("0") rufen eine Null-Objekt zu erstellen, und das Rück das Objekt auf nachfolgende Aufrufe. Andernfalls, wenn der Code auf einem 1,5-System ausgeführt wird, Ihr Singleton-Objekt kann nur ohne Laufzeitstrafe Rückkehr BigDecimal.ZERO.

Andere Tipps

NULL Verwendung nicht ein neues Objekt erstellen oder eine Analyse erfordern. Auf jeden Fall den Weg zu gehen.

Bevor ich über Laufzeitstrafen, stellen Sie sicher, dass dieses Stück Code Angelegenheiten. Richten Sie Profilierung und messen Sie den kompletten Anwendungsfall.

Dennoch Bigdecimal.ZERO bevorzugen, da es bei der Kompilierung geprüft hat, während Sie versehentlich new BigDecimal("9") eingeben können, die der Compiler akzeptiert, aber die werden Fehler in der Anwendung führen.

Aus Neugier schaute ich für BigDecimal Konstruktor und es hat keine Optimierungen für den „0“ String. Also auf jeden Fall ja, es gibt einen Unterschied.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top