Also habe ich einen String und ich möchte ein Double-Objekt mit dem String als Wert erstellen.
Ich kann
anrufen Double myDouble = new Double (myString);
oder ich kann
anrufen Double myDouble = Double.valueOf(myString);
Gibt es einen Unterschied? Ich schätze, die ersten Garantien, dass ein neues Objekt auf dem Heap erstellt wird und das zweite könnte ein vorhandenes Objekt erneut verwenden.
Für zusätzliches Guthaben : Die Zeichenfolge könnte null sein. In diesem Fall möchte ich, dass das Double null ist, aber der obige throw eine NullPointerException. Gibt es eine Art zu schreiben?
Double myDouble = myString == null ? null : Double.valueOf(myString);
in weniger Code?
Hängt von der Implementierung ab. openJDK 6 b14 verwendet diese Implementierung von Double(String s)
:
So ruft% valueOf(String s)
intern auf und muss im Vergleich zum direkten Aufruf dieser Methode weniger effizient sein.
Ihre Annahme ist richtig. Die zweite Möglichkeit, ein Double aus String zu erhalten, kann schneller sein, da der Wert möglicherweise aus einem Cache zurückgegeben wird.
In Bezug auf die zweite Frage können Sie eine null-sichere Helper-Methode erstellen, die null zurückgibt, anstatt NullPointerException zu werfen.
von Apache
%Vor%& amp;
%Vor%von der Sonne [Orakel] jdk
%Vor%& amp;
%Vor%Wenn Sie sich Gedanken über die Leistung machen, sollten Sie ein primitives Element verwenden.
%Vor%Tags und Links java