Zunächst müssen Sie den Unterschied zwischen den beiden Typen verstehen.
double
ist ein primitiver Typ, während Double
ein Objekt ist.
Der folgende Code zeigt eine überladene Methode, von der ich annehme, dass sie Ihrem Laborcode ähnelt.
%Vor%Sie können diese Methoden auf verschiedene Arten aufrufen:
%Vor%Diese Aufrufe führen zu:
%Vor% Offensichtlich wird Methode A aufgerufen, wenn Sie ein Double
-Objekt übergeben. wenn Sie etwas wie:
Wenn Sie ein doppeltes Literal übergeben, rufen Sie Methode B auf. Interessant ist, wenn Sie etwas wie
haben %Vor% In diesem Fall wird Methode B auch aufgerufen, weil der Typ von d
ist double
; Das Objekt Double
wird zu einem double
deaktiviert. In der gleichen Anmerkung, wenn Sie hatten:
then Methode A würde aufgerufen werden, weil der Typ von d
Double
wäre (die double
-literal wird automatisch mit Double
verknüpft).
Was Sie haben, ist ein Beispiel für Methodenüberladung . Der gute Teil ist, dass der Compiler und die JVM automatisch die richtige Methode basierend auf dem Typ der Argumente auswählen, der beim Aufruf der Methode verwendet wird.
Double
ist der Referenztyp und double
ist der Werttyp.
Die Klasse
Double
umschließt einen Wert des primitiven Typs double in einem Objekt. Ein Objekt vom Typ Double enthält ein einzelnes Feld, dessen Typ doppelt ist. " Link
Wie @Fess erwähnt wurde und weil Double
der Referenztyp ist, kann es null
sein.
Wenn Sie möchten, können Sie explizit von Double
nach double
mit .doubleValue()
Methode und viceverrsa mit new Double(1.0)
konvertieren.
Auch wie @millimoose sagte:
Sie sollten
X.valueOf()
anstelle vonnew X()
verwenden. Die MethodenvalueOf
dürfen die Boxing-Typen zwischenspeichern, um die Speicherbelegung zu reduzieren. (Ich bin mir nicht sicher, ob das fürDouble
s gemacht wird, aber es ist eine gute Gewohnheit, sich darauf einzulassen.) "
Double ist eine Wrapper-Klasse, während double ein primitiver Typ wie c / c ++ ist. Wie oben ausgeführt, wird Double hauptsächlich in Generika verwendet, ist aber auch überall dort nützlich, wo sowohl ein numerischer Wert als auch eine geeignete Objektkapselung benötigt wird. In den meisten Fällen können Double und Double synonym verwendet werden.
- double
ist ein primitiver Typ, wobei as Double
ein -Wrapper-Objekt ist.
- Eine der am häufigsten verwendeten Wrapper-Objekte ist Collection
.
Beispiel:
%Vor% - In Java 5 wurde ein Mechanismus namens Autoboxing
eingeführt, um direkt zwischen den beiden zu konvertieren.
Beispiel:
%Vor%Tags und Links java methods parameter-passing double