Doppel gegen Doppel in Java [Duplikat]

7

In einem Java-Beispielprogramm für eines meiner Labs habe ich zwei verschiedene Methoden, die doppelte bzw. doppelte Parameter verwenden.
Wie kann ich zwischen ihnen unterscheiden, wenn sie Argumente an sie übergeben?

    
Mahmoud 11.11.2012, 14:26
quelle

7 Antworten

18

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%     
Tom Cammann 11.11.2012, 14:39
quelle
21

Double Parameter kann null sein, wenn double nicht kann.

    
Maxim Shoustin 11.11.2012 14:33
quelle
1
%Vor%

Offensichtlich wird Methode A aufgerufen, wenn Sie ein Double -Objekt übergeben. wenn Sie etwas wie:

hatten %Vor%

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:

%Vor%

then Methode A würde aufgerufen werden, weil der Typ von d Double wäre (die double -literal wird automatisch mit Double verknüpft).

    
arshajii 11.11.2012 14:35
quelle
0

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.

    
matsev 11.11.2012 14:39
quelle
0

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 von new X() verwenden. Die Methoden valueOf dürfen die Boxing-Typen zwischenspeichern, um die Speicherbelegung zu reduzieren. (Ich bin mir nicht sicher, ob das für Double s gemacht wird, aber es ist eine gute Gewohnheit, sich darauf einzulassen.) "

    
Igor 11.11.2012 14:35
quelle
0

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.

    
yungtrizzle 11.11.2012 15:09
quelle
0

- 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%     
Kumar Vivek Mitra 11.11.2012 14:50
quelle