Datentypen default ist int, cast zu byte nötig...

tsitra

Bekanntes Mitglied
Hallo allerseits,

folgendes finde ich seltsam:

Java:
        byte by10 = 3; // Zeile 1
        byte by11 = 8;  // Zeile 2
        byte by12 = by10 + by11; //  // Zeile 3 : Compiler Fehler : possible loss of precision, found:int required: byte

Dass das nicht funktioniert, wird damit begründet, dass die Operanden"3" und "8" als int -Literale gedeutet werden.

Warum geht aber dennoch folgendes :

Java:
 byte by13 = 28 + 54;  //klappt !

Das sind offenbar auch int Literale !

Warum ist das so?

Viele Grüße

tsitra
 
Weil er nicht davon ausgehen kann, dass a und b zur Laufzeit addiert weniger/gleich viel als/wie 127 sind. Finalisierst du beiden bytes geht es, weil es dann sichergestellt ist.
 
Zuletzt bearbeitet:
"cannot convert from int to byte" sollte eigtl kommen

der compiler in java MUSS SICHERSTELLEN, dass du den wertebereich nicht ueberschreitest.
Java:
byte by13 = 100 + 27; // klar geht das, der compiler weiß dass 127 im wertebereich ist
Java:
byte by13 = 100 + 28; // compiler merkt, dass 128 nicht mehr drinne ist

wenn du nun variablen nutzt beim addieren, dann ist der compiler sicht nicht sicher und meckert dass du casten sollst.

das kam in irgendeinen update von dem JDK mit, so dass auch "bytes" beachtet werden.

same here:
Java:
int b14 = 1.0 + 5.0; // gleitkommazahl nicht im wertebereich

es sieht bei byte nur nicht so "eindeutig" aus, weil wir unter "3" etc. byte und int verstehen :toll:
 

Neue Themen


Zurück
Oben