Datentypen Explizite Konvertierung

knowledge

Bekanntes Mitglied
short a;
int b = 5;

a = b; geht ja nicht ohne explizite Konvertierung da ein größerer Wertebereich (int) in einen kleineren (short) gepackt werden soll.

Der Compiler betrachtet hierbei ja nur den Wertebereich und nicht die konkreten Werte die zugewiesen werden (z.B. hier 5).
Warum wird nicht der konkrete Wert berücksichtigt. Den Wert 5 könnte man ja durchaus auch mit dem Wertebereich von short ausdrücken. Warum wird das nicht gemacht?
 

DerEisteeTrinker

Bekanntes Mitglied
Der Compiler geht nicht nach Inhalt. Ist halt einfach so. Die eigentliche Konvertierung übernimmt erst der Interpreter des byte-Codes, der anhand der Befehle die der Compiler zu fressen gekriegt hat erzeugt wurde.
 
B

bone2

Gast
naja du vergleichst 00000000 00000101 mit 00000000 00000000 00000000 00000101 und das ist nunmal nicht gleich. der compiler findet nur syntaxfehler, keine logikfehler
 

knowledge

Bekanntes Mitglied
Na aber bei der Zuweisung ist es doch egal.

0000 0000 0000 0000 0000 0000 0000 0101 --> 5 als Bitmuster in int

0000 0000 0000 0101 --> 5 als Bitmuster in short

Ich mein ich kann ohne Wertverlust das eine Bitmuster in das andere übertragen. Semantik 5 bleibt ja erhalten
 
B

bone2

Gast
Warum stört dich das? sei doch froh das er dich bei der zuweisung darauf hinweist das da buggefahr herrscht. Wenn er dich nicht warnt beschwerst du dich nachher wieso das programm nciht so funktioniert wie du denkst.
 
M

maki

Gast
Andi_CH hat es doch schon erklärt, zur Compilezeit sind die Werte nicht unbedingt bekannt, also meckert der Compliler schon vorher wenn die Wertebereiche nicht kompatibel sind.
 
B

bygones

Gast
umso nochmal zu sagen

im grunde sieht er nur [c]a = b[/c] mit den Typen... und das geht nicht
 
M

maki

Gast
Also beispielsweise bei ner Fallunterscheidung oder sowas? Oder wie ist das gemeint mit nicht bekannt...
Du vergisst den wichtigsten Punkt: Die Typ deklaration
Der Compiler kann nicht wissen welche Werte deine Variablen zur Laufzeit haben, aber er weiss dass nicht jeder int in ein short passt, deswegen ist implizite Konvertierung verboten.
 
B

bone2

Gast
der compiler sieht nur [c]short = int;[/c] udn das geht nicht, da er nicht weiß was er machen soll. vorne was wegstreichen? hinten was wegstreichen? vorne und hinten?
 

knowledge

Bekanntes Mitglied
Du vergisst den wichtigsten Punkt: Die Typ deklaration
Der Compiler kann nicht wissen welche Werte deine Variablen zur Laufzeit haben, aber er weiss dass nicht jeder int in ein short passt, deswegen ist implizite Konvertierung verboten.

Wieso "kann" das der Compiler nicht? Könnte er nicht einfach den Programmablauf prüfen ob irgendwo ne Zuweisung von z.B. 5 stattfindet, was ja passen würde?
 
M

maki

Gast
Wieso "kann" das der Compiler nicht? Könnte er nicht einfach den Programmablauf prüfen ob irgendwo ne Zuweisung von z.B. 5 stattfindet, was ja passen würde?
Was ist denn wenn der Wert nicht final ist & hardcodiert im Source steht, sondern erst zur Laufzeit bekannt ist?

Die von dir erwähnte Ausnahme mag zwar zutreffen, aber es bleibt doch nur eine Ausnahme.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Herleitung explizite Formel und Rekursionsformel Java Basics - Anfänger-Themen 15
C Explizite und implizite Datentypen Java Basics - Anfänger-Themen 12
Antoras Explizite Typenumwandlung in einem Befehl Java Basics - Anfänger-Themen 3
C Konvertierung des int typs in den double typ für die Ausgabe mit Nachkommastellen Java Basics - Anfänger-Themen 4
M Konvertierung String -> double Java Basics - Anfänger-Themen 8
B Date Konvertierung Java Basics - Anfänger-Themen 0
T Datentypen Calender/Gregorianisch/Julianisch/JDN Konvertierung Java Basics - Anfänger-Themen 4
W Konvertierung und Vergleich unterschiedlicher Zeitformate Java Basics - Anfänger-Themen 11
W Methoden Konvertierung von Sonderzeichen Java Basics - Anfänger-Themen 2
C Konvertierung per Hand ausrechnen Java Basics - Anfänger-Themen 8
S Konvertierung in Liste Java Basics - Anfänger-Themen 3
M Erste Schritte konvertierung von int zu char Java Basics - Anfänger-Themen 3
V Erste Schritte Konvertierung Java Basics - Anfänger-Themen 2
D Input/Output Stringbuffer Befehle bei Konvertierung in String Java Basics - Anfänger-Themen 19
T Problem mit Array Konvertierung Java Basics - Anfänger-Themen 13
D Konvertierung UnsignedInt zu long Java Basics - Anfänger-Themen 5
K Konvertierung von einem Text in eine Zahl in Excel(JXL) Java Basics - Anfänger-Themen 2
A Konvertierung String-->hex-->long Java Basics - Anfänger-Themen 7
D Methode zur Konvertierung von Oberklasse in Unterklasse Java Basics - Anfänger-Themen 5
H Konvertierung String -> int Java Basics - Anfänger-Themen 11
D konvertierung/char/int Java Basics - Anfänger-Themen 14
S Konvertierung von dez zu bin mit Bool-Array Java Basics - Anfänger-Themen 9
R Konvertierung int nach char, Ausgabefehler Java Basics - Anfänger-Themen 3
E Typ Konvertierung Java Basics - Anfänger-Themen 4
R datentypen konvertierung u modulorechnung Java Basics - Anfänger-Themen 15
I Unstimmigkeit bei String-nach-Double-Konvertierung Java Basics - Anfänger-Themen 7
G Konvertierung von charArray in String funzt net Java Basics - Anfänger-Themen 3
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
I Konvertierung von double in int Java Basics - Anfänger-Themen 2
G Konvertierung Byte Array Java Basics - Anfänger-Themen 4
M Konvertierung v. Strings (evtl. mit Sonderzeichen) nach HTML Java Basics - Anfänger-Themen 8
G Probleme mit Konvertierung und Substraktion im Calendar Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben