Implizite Typumwandlung nach Java 8 anders?

coco07

Bekanntes Mitglied
Hey Community,

ich habe jetzt eine längere Java Pause gemacht und wollte dann wieder loslegen. Mir ist aber aufgefallen, dass bei der impliziten Typumwandlung etwas anders ist als vorher(denke ich jedenfalls)..
Ist auch nicht wirklich ein Problem, es macht mich trotzdem verrückt, wie ich darauf komme :lol:

Also:
Java:
byte b = 3; // Das funktionierte früher ohne Probleme(jetzt auch noch)
b = (byte) 5 // Aber hier war es doch so, dass ich einen expliziten Cast durchführen musste, wenn der Wert nicht direkt bei der Deklaration zugewiesen wird?
Ich hatte früher sogar in einem anderen Forum nachgefragt, warum dass so ist. Ich finde dieses Thema leider nicht wieder 🙁

Heute ist das möglich:
Java:
byte b;
b = 5; // Hier wird jetzt automatisch gecastet

Bin ich jetzt völlig durcheinander, oder war das früher wirklich so? Vielleicht gab es in dieser Zeit auch ein Compiler-Update?

Mit freundlichen Grüßen
Fabian König!
 
Das war früher auch kein Problem:
Java:
byte b;
b=5;
Erst wenn man rechnen will, muss man casten:
Java:
byte a = 1;
byte b = 2;
byte c = a + b;
Dies liegt daran, dass byte/short/char/int bei berechnungen als int betrachtet werden
 
InfectedBytes@
Ja, dass ist mir bewusst... Ich bin nun auch kein Anfänger mehr, aber irgendwie kommt mir das gerade komisch vor...
Dann muss ich wohl den alten Thread wieder aufspüren, um zu wissen, was damals das Problem war 😀

grüße Fabian!
 
Kann mir mal jemand ein Bsp. dafür zeigen, dass char zu int wird?

@coco07: Beim rechnen zweier byte mußt Du umwandeln, weil ggf. der Wertebereich überschritten wird. byte 125 + byte 100 ergibt eben keinen byte mehr...

f5
 
char ist vom Prinzip her nicht anderes als eine vorzeichenlose 16 Bit ganzzahl => Der Bereich geht also von 0-65535
Die jeweiligen Zahlen werden durch den Unicode standart mit den jeweiligen bekannten Zeichen assoziiert.
Java:
System.out.println('A' + 'B');
Dieses Programm liefert den Wert 131, da 'A' den Wert 65 und 'B' den Wert 66 hat.
 
fanta5@
Ist mir klar, warum hier der Cast benötigt wird. Mir war aber so, dass mein oben geposteter Code vor Java 6 bzw. 7 noch nicht möglich war. Irgendwie hatte ich da was in Erinnerung gehabt. Das Problem ist auch, dass mich das wahnsinnig macht, ich will jetzt wissen, was das Problem damals war 😀

Fällt euch sonnst noch was ein, was nur bei der Deklaration möglich ist und dann nur noch mit Einschränkung? Damit sind keine finalen Variablen gemeint 😉

grüße Fabian!
 
Zuletzt bearbeitet:

Zurück
Oben