Typumwandlung in JAVA

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

  • Typumwandlung in JAVA

    Typumwandlung in Java


    In Java ist es möglich, einen primitiven Datentyp in einen anderen umzuwandeln.
    Dabei sind einige Regeln zu beachten:
    1. Der Datentyp boolean kann nicht in einen anderen Datentyp umgewandelt werden.
    2. Es gibt implizite und explizite Typumwandlungen.

    Implizite Typumwandlungen
    Bei der impliziten Typumwandlung spricht man auch von einer automatischen Typumwandlung.
    Dabei ist zu beachten, dass dies nur geschieht, wenn der neue Datentyp einen größeren Wertebereich hat, als der alte.
    Die Wertebereiche findet Ihr auf dem Datentypen-Blatt, welches ich als Anhang bereitstellen werde.
    Ein Beispiel dafür wäre folgender Code:

    Java-Quellcode

    1. byte a = 1;int b = a;


    In diesem Abschnitt sehen wir eine implizite Typumwandlung. Nämlich „int b = a;“.
    Da int einen größeren Wertebereich besitzt als byte, ist dies ohne Probleme / Verlust möglich.

    Implizite Typumwandlungen können auch in anderen Fällen auftreten:

    Java-Quellcode

    1. double c = 10 - 4.0;

    In dieser Rechnung wird „10“ (ein int-Wert) automatisch in einen double-Wert (10.0)
    umgewandelt, da der 2. Operand ebenfalls eine Dezimalzahl ist.

    Explizite Typumwandlungen
    Bei der expliziten Typumwandlung spricht man davon, dass der Programmierer die Typumwandlung selbst vornehmen muss / explizit vornehmen muss.
    Das bedeutet, dass diese Typumwandlung nicht automatisch passiert.
    Die explizite Typumwandlung wird daher auch in den Fällen benutzt, wo man von Datentypen mit größeren Wertebereichen in Datentypen mit kleineren Wertebereichen
    umwandeln möchte.
    Das Schema einer expliziten Typumwandlung sieht folgendermaßen aus:

    Java-Quellcode

    1. neuerDatentyp variablenName = (neuerDatentyp) alteVariable;

    Also z.B

    Java-Quellcode

    1. int a = 200;short b = (short) a;


    Dort ist die Zeile „short b = (short) a“ die explizite Typumwandlung.
    Diese Umwandlung kann mit Verlusten und Problemen behaftet sein. Beispiele dafür sind:

    Java-Quellcode

    1. double a = 50.99;int b = (int) a;


    In diesem Fall wäre b = 50 (es wird nicht gerundet, sondern die Nachkommastellen werden einfach abgeschnitten).
    Also es kann z.B zum Verlust von Nachkommastellen kommen.

    Java-Quellcode

    1. int a = 300;byte b = (byte) a;


    In diesem Fall wäre b = 44. (Da byte nur den Wertebereich von -128 bis 127 hat, geht es bei der Typumwandlung bei Zahlen > 127 wieder von vorne los, also 128 (in „int“) wäre dann -128 (in „byte“) und 129 (in „int“) wäre dann -127 (in „byte“).

    Also kann es auch zu einem nicht erwarteten Wert führen.


    Optionale Aufgaben
    Bei den nachfolgenden Aufgaben gebe ich dir jeweils zwei Variablen vor. Die erste ist die Ausgangsvariable (inkl. Ihrem Datentyp), die zweite ist (inkl. Ihrem Datentyp) die, in welche umgewandelt werden soll.

    Ein Beispiel:

    Java-Quellcode

    1. byte a = 50; int b;

    Dort steht nun, nach der oben genannten Definition:

    Java-Quellcode

    1. byte a = 50;int b = a;


    Dies war eine implizite Typumwandlung.
    Für eine explizite Umwandlung hätte dort stehen müssen:

    Java-Quellcode

    1. int a = 50; byte b;

    Dort steht ausgeschrieben dann, nach der o.g Definition:

    Java-Quellcode

    1. int a = 50;byte b = (byte) a;


    Aufgabe: Entscheide ob es sich nach der o.g Definition bei dieser Vorgabe an Variablen um eine explizite oder eine implizite Typumwandlung handelt.

    1. short a = 20; int b;
    2. short a = 30; byte b;
    3. int a = 50; short b;
    4. int a = 40; byte b;
    5. double a = 50.0; int b;
    6. float a = 50.0f; int b;

    Hier noch einmal die primitiven Datentypen (nur die, mit denen sich die Aufgaben befassen), nach ihrem Wertebereich (aufsteigend) sortiert.

    byte → short → int → float → double

    Anmerkung des Autors: Dieser Text ist eine Kopie von einer mir - für meine Schüler - erstellten .pdf-File.
    Dateien