2010-09-14 22 views

Antwort

20

Die Logik ist die gleiche, aber der Rückgabewert von Double.valueOf() gibt ein Heap zugewiesen Doppel Objekt, in dem als parseDouble einen primitives zurück doppelt. Ihr Codebeispiel ist nicht ganz korrekt. Die Java-Quelle lautet:

+2

thx, also die Kosten sind weniger für parseDouble (String s), wenn Sie nur den Wert benötigen, und nicht alle Methoden anhängen ... – oyo

+0

Ja, Sie sind richtig –

0

valueOf gibt ein Double zurück, parseDouble gibt ein Double zurück. Verwenden Sie, was immer Ihren Bedürfnissen entspricht.

0

In Java 6 ist es umgekehrt:

 
Double valueOf(String s) throws ... {  
     return new Double(Double.parseDouble(s)); 
} 
1

parseDouble eine double value zurückkehrt, kehrt valueOf eine neue object vom Typ Double.

+0

Ich glaube nicht, dass es etwas gibt, was es sagt ein * neuer * Double sein. –

2

Hängt davon ab, ob Sie ein Doppel oder ein Doppel wollen. Obwohl mit Autoboxing, spielt es keine Rolle. Wenn Sie etwas sehr intensives tun, dann sollten Sie es vermeiden, an Stellen, wo Doubles benötigt werden, Doubles zu verwenden, um den Autoboxing-Overhead zu vermeiden. Aber es müsste sehr, sehr, sehr, intensiv sein, bevor es tatsächlich einen Unterschied macht.

Ich würde jedoch immer noch befürworten, die richtige nach dem gewünschten Ergebnis zu verwenden.

+0

ja. In der Tat brauche ich nur den Wert, also werde ich doppelt primitiv verwenden. – oyo

+0

Gibt es Hinweise darauf, dass Autoboxing mehr Aufwand verursacht als der explizite Aufruf von 'Double.valueOf (somePrimitiveDouble)'? Ich würde fast garantieren, dass es keinen zusätzlichen Aufwand hätte. Die Zeit, in der Sie es vermeiden möchten, ist in die andere Richtung: Wenn Sie 'valueOf' aufrufen, erhalten Sie ein Double, und Sie brauchen nur ein Primitiv. Das wäre sinnlos. –

1

Einfach,

public static double parseDouble(String s) throws NumberFormatException 

gibt eine Java primitive double, während

public static Double valueOf(String s) throws NumberFormatException 

ein gibt doppelten Wert in einem Double gewickelt.

Verwandte Themen