Variablen und Datentypen © Jürgen Lederer, Michael Bösser Veranschaulichung einer Variable schreibender Zugriff lesender Zugriff Inhalt Bezeichner Speicherzelle(n) © Jürgen Lederer, Michael Bösser Anzahl der Speicherzellen = Typ Eigenschaften einer Variable Eine Variable ist eine Speicherzelle im Hauptspeicher, in die man eine Wert ablegen kann (Schreibzugriff) und später wieder abrufen kann (Lesezugriff) Java verwendet die Attributdeklaration um Speicherplatz zu reservieren um Konsistenzüberprüfungen vorzunehmen. © Jürgen Lederer, Michael Bösser Variablendeklaration in Java Allgemein: Datentyp Bezeichner ; • Art der Variable • Name der Speicherzelle • benötigten Speicher • Regeln für gültige Bezeichner Beispiele: int Laenge; int Laenge, Breite; © Jürgen Lederer, Michael Bösser Regeln für gültige Bezeichner Bezeichner können die Buchstaben a-z bzw. A-Z den Unterstrich _ die Ziffern 0-9 enthalten. Einschränkungen Umlaute sind erlaubt, Sonderzeichen nicht. Das erste Zeichen muss ein Buchstabe, ein Unterstrich oder das $ Zeichen sein. © Jürgen Lederer, Michael Bösser Der Typ bool in Java Der Java-Typ bool Wertebereich (plattformunabhängig) true oder false (boolesche Literale) Binäre Operationen (Operand1 Operator Operand2) Operator Erklärung Beispiel == Gleichheit 7 == 8 ergibt false != Ungleichheit 5 != 5 ergibt false & logisches UND true & true ergibt true | logisches ODER false | false ergibt false ^ logisches XODER false ^ false ergibt true Unäre Operation (Operator Operand) ! Boolesche Negation ! true ergibt false. © Jürgen Lederer, Michael Bösser Ganzzahlige Typen in Java Wertebereich (plattformunabhängig) Typ byte short int long char Kleinster Wert Größter Wert Speicherplatz 0 255 1 Byte -32768 32767 2 Bytes -2147483648 2147483647 4 Bytes -9223372036854775808 9223372036854775807 8 Bytes /u0000 (0) /uffff (65535) 2 Bytes. © Jürgen Lederer, Michael Bösser Ganzzahlige Typen in Java Darstellung als IntegerLiteral 4 Darstellungsarten Dezimaldarstellung: Oktaldarstellung: Hexadezimaldarstellung: Literal von Typ long: 110 0156 0x6E 110L, 110l Zeichen Darstellung in einfachen Anführungszeichen Beispiel:‘A‘,‘B‘ Spezielle Zeichen mit vorangestelltem \ Beispiele \t (Tabulator) \n (neue Zeile) \udddd (Unicode). © Jürgen Lederer, Michael Bösser Ganzzahlige Typen in Java Binäre Operationen (Operand1 Operator Operand2) Operator Erklärung + Addition Subtraktion * Multiplikation / Division % Modulo < Kleiner <= Kleiner gleich > Größer >= Größer Gleich == Gleich != Ungleich © Jürgen Lederer, Michael Bösser Beispiel 5 + 6 ergibt 11 9-3 ergibt 6 10 * 15 ergibt 150 13 / 3 ergibt 4 20 % 7 ergibt 6 3 < 5 ergibt true 3 <= 3 ergibt true 2 > 10 ergibt false 5 >= 6 ergibt false 3 == 3 ergibt true 5 != 5 ergibt false. Gleitpunkt-Typen in Java Gleitpunkt-Typen in Java float Wertebereich (plattformunabhängig) s*m*2^e mit s = +1 oder -1 24 m = positiv ganze Zahl <2 e = ganze Zahl zwischen -149 und 104 Speicherplatz 4 Bytes (32 Bits) Voreinstellung 0.0f Genauigkeit ca. 7 signifikante Dezimalziffern. © Jürgen Lederer, Michael Bösser Gleitpunkt-Typen in Java double Wertebereich (plattformunabhängig) s*m*2^e mit s = +1 oder -1 53 m = positiv ganze Zahl < 2 e = ganze Zahl zwischen -1075 und 970 Speicherplatz 8 Bytes (64 Bits) Voreinstellung 0.0d Genauigkeit ca. 15 signifikante Dezimalziffern. © Jürgen Lederer, Michael Bösser Gleitpunkt-Typen in Java Binäre Operationen (analog zu ganzzahligen Typen) + - * / % (Arithmetische Operationen) < <= > >= == != (Vergleichsoperationen) Arithmetischen Operationen Beide Operanden vom Typ float In allen anderen Fällen Ergebnistyp float Ergebnistyp double Vorsicht bei Prüfung auf Gleichheit ( x == y) //mögliche Rundungsfehler ! © Jürgen Lederer, Michael Bösser Die Zuweisung 1 Schreibender Zugriff float Radius; //Deklaration Radius Bezeichner der Speicherzelle, in die der Wert eingetragen werden soll = Symbol, daß ein Wert eingetragen werden soll (Zuweisungssymbol, ErgibtZeichen) 5.5f ; Angabe, was eingetragen werden soll Zeichen für Ende der Anweisung Radius Zuweisung Kennzeichnung einer Zahl vom Typ float durch f oder F Fehlt das f, ist die Zahl vom Typ double. © Jürgen Lederer, Michael Bösser 5.5f Die Zuweisung Eine Zuweisung wird folgendermaßen gelesen: »Radius ergibt sich zu 5.5« oder »Radius wird 5.5 zugewiesen« oder »Radius sei 5.5« Zuweisung löscht den in der Speicherzelle befindlichen Wert Unterschiede in den Programmiersprachen In einigen Programmiersprachen Verwendung von »:=« als Zuweisungszeichen In Java und C++ Verwendung von »=« Programmierer muß darauf achten, daß er nicht = (Zuweisung) und == (Vergleich auf Gleichheit) verwechselt! . © Jürgen Lederer, Michael Bösser Die Zuweisung 2 Lesender und schreibender Zugriff auf verschiedene Attribute © Jürgen Lederer, Michael Bösser Die Zuweisung 3 Lesender und schreibender Zugriff auf dasselbe Attribut int Zaehler; //Deklaration Zaehler = Zaehler + 1; © Jürgen Lederer, Michael Bösser Typumwandlungen Einem Attribut können nur Werte zugeordnet werden, die seinem Typ entsprechen ! Beispiel int A; float B = 10.5; A = B; // Fehler wegen unterschiedlicher Typen = A B © Jürgen Lederer, Michael Bösser Typwandlungen Automatische Typausweitung Von byte nach short, int, long, float, double Von short nach int, long, float oder double Von char nach int, long, float, oder double Von int nach long, float, oder double Von long nach float oder double Von float nach double Beispiel double a, b; float c; a = b + c + 2.785f;. © Jürgen Lederer, Michael Bösser Typwandlungen Explizite Typeinengung (casting) Erfolgt, wenn der gewünschte Typ explizit angegeben wird Beispiel int a; float b = 10.25; a = (int) b; float-Wert 10.52f wird in den int-Wert 10 gewandelt a = (int)(b / 3.3f + 5.73f); Typanpassung erfolgt erst nach der Ausführung der Berechnung b / 3.3f + 5.73f. © Jürgen Lederer, Michael Bösser