Typumwaldung mit byte

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Typumwaldung mit byte

    Hallo,

    ich habe mal eine elementare Frage zum Thema Typumwandlung.

    Folgender Code:

    Quellcode

    1. byte var1;
    2. byte var2 = 10;
    3. byte var3 = 8;
    4. var1 = var2 + bvar3;


    Bei der Addition von 2 und 3 gibt es allerdings einen Fehler. Jetzt Frage ich mich, der Datentyp byte (8 Bit Speicherbereich) hat doch genügend Platz für 8, 10 und auch das Ergebnis 18. Warum gibt es hier einen Fehler?

    Eclipse schlägt mir einen Typcast (byte) vor, damit geht es dann auch. Ich vermute dass die Variablen 2 und 3 bei der Addition als int interpretiert werden.

    Ich suche nicht nach der Lösung des Problems, sondern nach Verständnis warum das nicht geht.

    Danke für Hilfreiche Antworten
  • Ich hatte gestern zufälligerweise ein ähnliches Problem.

    Es ist so, dass Java keine Byte Operationen beherrscht... Alle Rechenoperationen sind Integer Operationen und liefern dementsprechend Integer zurück. Und wenn man dann versucht das in ein Byte zu speichern, beschwert er sich dann, da es zu Verlußt kommen kann, wenn die Zahl nicht in ein Byte passt. Völlig unabhängig davon ob das im speziellen Fall tatsächlich der Fall ist.

    Mein Tipp daher: Immer mit int Variablen arbeiten, wenn man nicht unbedingt Bytes braucht. Man spart sich nichts, da er auch für einzelne Bytes 32Bit Speicher benutzt und man auch bei den Operationen nichts spart. Bytes lohnen sich nur, wenn man beispielsweise ein Byte-Array hat, da spart es tatsächlich enstprechend Speicher.
  • Hallo Rondrer,

    danke für deine Antwort. Auf diese Lösung bin ich inzwischen auch gekommen.
    Im Vorlesungsskript meiner FH steht folgender Satz:
    "Der „kleinste“ Datentyp innerhalb eines Ausdrucks ist int,
    d.h. byte, char und short werden ebenfalls in int
    umgewandelt."
    Was das Problem ja eigentlich schon erklärt.

    Vielen Dank trotzdem. Thema geklärt