Typenumwandlumg

Logaff

Bekanntes Mitglied
Hiho,
kann mir jmd mal kurz erläutern was der Unterscheid ist zwischen einem Cast zb

(double)(1+2)

im vergleich
Double.parseDouble(String.valueOf(1+2)).

gibst da noch einen unterscheid ausser die länge vom code und die 2maligen umwandlungen beim 2ten fall?
 

faetzminator

Gesperrter Benutzer
Im einen Fall castest du einen int in einen double.
Im anderen Fall erstellst du einen String, welchen du wieder in einen Double umwandelst (, welcher schlussendlich warscheinlich wieder in einen double autoboxed wird).
Wie kommst du auf den letzteren Code?
 

Logaff

Bekanntes Mitglied
der letzte code ist aber schwachsinnig aber sollte nur repräsentant wirken^^

ich wollte wissen wie man am besten typen umwandelt und da man ja casten oder halt die klassenmethoden anwendugen kann wollt ich wissen was besser is, bzw für welches einsatzgebiet was benutzt werden sollte
 

Volvagia

Top Contributor
Das Erste falls du einen Typ hast, der größer als der Zieltyp ist oder anders die Gefahr eines Verlustes entsteht. (double -> int z. B.), das 2. falls du einen String hast, den du zu einer Zahl machen willst. (Wobei das eigendlich nur ohne weiteres bei Ganzzahlen verwendbar ist, da Gleitkommazahlen in jeden Land anders dargestellt werden. Da gibt es Dinge wie z. B. DecimalFormat.)
 

faetzminator

Gesperrter Benutzer
Da man meistens sowieso nur von und zu primitiven Datentypen, deren Wrapper und Strings castet, ist das Problem schon von Anfang an gelöst:
- Von primitiv zu primitiv, z.B. von double nach int
--> [c]int i = (int) 4.5 + 3.2;[/c]
- Von * zu String
--> [c]String string = String.valueOf(...)[/c]
- Von String zu Wrapperklasse (z.B. Integer)
--> [c]Integer i = Integer.valueOf(string);[/c]
- Von String zu primitiv (z.B. int)
--> [c]int i = Integer.intValue(string)[/c]
- Von primitiv zu Wrapper (z.B. int -> Integer)
ebenfalls:
--> [c]Integer i = Integer.valueOf(3);[/c]
 

Andi_CH

Top Contributor
Der Unterschied zwischen

Code:
(double)(1/2)

Code:
(double)(1) / (double)(2)

ist wohl eher ein Gedanke wert.

Ein Versuch den Unterschied zu beschreiben

parseDouble ändert nicht nur den Typ sondern auch die Daten - von String nach Double
Ein cast ändert nur die Interpretation des Wertes.

(Hm, kann es jemand besser?)
 

Neue Themen


Oben