Vorlesung Programmieren 2. Typen und Variablen 02.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.0 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD), KIT-FAKULTÄT FÜR INFORMATIK are.ipd.kit.edu KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu
Literaturhinweis - Weiterlesen Dietmar Ratz, Jens Scheffler, Detlef Seese und Jan Wiesenberger Grundkurs Programmieren in Java, 7. Auflage, 2014 (mit Java 8), Hansa-Verlag Kapitel 3 Aller Anfang ist schwer Abschnitt 4.3 Einfache Datentypen Abschnitt 4.4 Der Umgang mit einfachen Datentypen 2 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Interactive Talk (InTa) Werkzeug zur Integration von Publikumsinteraktion Entwickelt am Forschungszentrum Informatik (FZI) Abstimmen über Online-Oberfläche (bspw. Smartphone) Beispiel: Haben Sie BoGy (Berufsorientierung an Gymnasien) absolviert? Link: http://inta.fzi.de/inta Umfrage-ID: 95 3 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Datentypen Definition: In Java: Ein Datentyp (kurz: Typ) bezeichnet eine Menge gleichartiger Werte Datentypen legen die möglichen Werte von Variablen, Attributen (und Methoden) fest Datentypen bestimmen auch, welche Operationen auf den Werten möglich sind 8 elementare Datentypen ( primitive data types ) Zahlen: ganze Zahlen, Fließkommazahlen ( reelle Zahlen ) Wahrheitswerte (wahr/falsch) Zeichen Jede Klasse bildet einen Datentyp Erweiterung der elementaren Datentypen um eigene, benutzerdefinierte dadurch möglich 4 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Die elementaren Datentypen in Java 5 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Wertebereiche der elementaren Datentypen Wertedarstellung in verschiedenen Zahlensystemen 6 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Vordefinierte Operationen auf elementaren Datentypen Präzedenz: Je kleiner der Wert, desto stärker bindet der Operator! Kurzschlussauswertung (short-circuit-evaluation) möglich bei && und 7 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Umrechnung von Zahlensystemen ganze Zahlen Quotient Quotient Quotient Quotient Umrechnen der Dezimalzahl 21 in die äquivalente Binärzahl 21 % 2 = 1 10 % 2 = 0 5 % 2 = 1 2 % 2 = 0 1 % 2 = 1 Rest Rest Rest Rest Rest 1 0 1 0 1 Umrechnen der Binärzahl 10101 in die äquivalente Dezimalzahl 2 4 2 3 2 2 2 1 2 0 1 0 1 0 1 1*2 4 +0*2 3 +1*2 2 +0*2 1 +1*2 0 = 16 + 0 + 4 + 0 + 1 = 21 8 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Operatoren auf ganzen Zahlen: Beispiele Linksshift: 11110010 << 1 = 11100100 11110010 << 2 = 11001000 Rechtsshift (Vorzeichenkonform) 11110010: Eine negative Zahl 01110010: Eine positive Zahl 11110010 >> 1 = 11111001 11110010 >> 2 = 11111100 01110010 >> 1 = 00111001 01110010 >> 2 = 00011100 Rechtsshift (Ohne Vorzeichen) 11110010 >>> 1 = 01111001 11110010 >>> 2 = 00111100 9 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Präzedenz: Beispiele Präzedenzregeln helfen, unnötige Klammern zu vermeiden Beispiel: Der Ausdruck x < 2*y+1 &&!(x >= y % z) wird so ausgewertet: (x < ((2*y)+1)) && (!(x >= (y % z))) Präzedenz Operator 1 +x, -x 2 x*y, x/y, x%y 3 x+y, x-y 5 x<y, x<=y, x>y, x>=y 6 x==y, x!=y 1!x 10 x && y 11 x y Präzedenz: Je kleiner der Wert, desto stärker bindet der Operator! 10 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Die Wahrheitswerte: boolean Werte: true, false Operatoren: Dabei gilt: 1 ist Abkürzung für true 0 ist Abkürzung für false 11 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Die ganzen Zahlen: byte, short, int, long Operatoren: +, -, * und Vergleichs-Operatoren (fast) wie in der Mathematik / und % ganzzahlig Z.B: 17 / 5 = 3 und 17 % 5 = 2 Über- und Unterlauf: Ist das (mathematisch) exakte Ergebnis einer Operation nicht im Wertebereich eines Typs, werden die höchstwertigen Bits ignoriert Beispiele (Typ int): Achtung: 2 000 000 000 + 2 000 000 000 = -294 967 296-2 147 483 648-1 = +2 147 483 647 Das Ergebnis von arithmetischen Operationen mit Operanden vom Typ byte und short ist vom Typ int! 12 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Die ganzen Zahlen: byte, short, int, long Weitere Operatoren: ++: Inkrement-Operator: erhöht Variable um eins --: Dekrement-Operator: verringert Variable um eins Prä- und Post-Inkrement/Dekrement ++ und -- können in Präfix- und Postfix-Notation verwendet werden: Präfix: Postfix: Semantik: y = ++x ++x, --y x++, y-- entspricht x = x + 1; y = x y = x++ entspricht y = x; x = x + 1 analog für -- 13 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Die Fließkommazahlen: float und double Implementierung des IEEE-754-Standards Werte: Teilmenge der reellen Zahlen (R) Notation: Mit Dezimalpunkt: 3.141592 Wissenschaftliche Darstellung: 6.022e23 (steht für 6.022 10 23 ) Interne Darstellung mittels Vorzeichen, Exponent und Mantisse: Basis 2 in der Exponentiation x = (-1) VZ M 2 EXP Beispiel: VZ = 1, EXP = -1, M = 5 ergibt x = (-1) 1 5 2-1 = -2.5 14 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Die Fließkommazahlen: float und double Besondere Werte: NaN (Not-a-Number), POSITIVE_INFINITY, NEGATIVE_INFINITY +0.0 und -0.0 Mathematische Operationen werden gerundet Java stellt eine Klasse Math bereit mit typischen Fließkommaoperationen: abs, sin, cos, sqrt,... Gleichheit (==) und Ungleichheit (!=) nur selten sinnvoll nutzbar Statt x == y besser Math.abs(x-y) < 0.1E-8 Statt x!= y besser Math.abs(x-y) >= 0.1E-8 15 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
IEEE 754 - Gleitkommazahlen Standardisierte Darstellung für Gleitkommazahlen im Rechner, u.a.: Single Precision (32 Bit) 1 Bit Vorzeichen 8 Bit Exponent 23 Bit Mantisse Double Precision (64 Bit) 1 Bit Vorzeichen 11 Bit Exponent 52 Bit Mantisse Grund: Jede Gleitkommazahl kann wie folgt geschrieben werden: Zahl = Vorzeichen.Mantisse.Basis Exponent Bei binären Zahlen entspricht Basis immer 2 Die Zahl vor dem Komma ist immer 1 wird nicht explizit gespeichert. Positive Zahl Vorzeichen=0, negative Zahl Vorzeichen=1 Exponent muss stets positiv sein (biased representation) 16 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
IEEE 754 - Gleitkommazahlen Grund für "biased representation : Das Vorzeichen eines Exponenten sagt aus, ob eine Zahl groß oder klein ist. Das Vorzeichen eines Exponenten sagt nicht aus, ob eine Zahl positiv oder negativ ist. Ein vorzeichenbehafteter Exponent erschwert die Vergleichsoperationen Exponent muss positiv sein Mit 8 Bit können 256 darstellbar Exponent 0000 0000 und 1111 1111 sind reserviert. Exponent = 1111 1111 und Mantisse = 0..0 Unendlich Exponent = 1111 1111 und Mantisse > 0 Keine Zahl (NaN) 2 8 2 = 254 verfügbare Exponenten Addition mit 127 (single precision) Kleinen Zahlen sind durch kleine Exponenten dargestellt und umgekehrt 17 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Nachteile In IEEE 754 gibt es sowohl +0, als auch -0: Vorzeichen=0, Exponent=0, Mantisse=0 +0 Vorzeichen=1, Exponent=0, Mantisse=0-0 Rundungsfehler, Beispiel: float i = 1.05; float j = 0.05; i j = 0.99999994 18 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
IEEE 754 Gleitkommazahlen: Beispiel Umrechnen der Zahl 21,4 in IEEE 754 Single Precision Umrechnen der Vorkommazahl 21 21 % 2 = 1 10 % 2 = 0 5 % 2 = 1 2 % 2 = 0 1 % 2 = 1 1 0 1 0 1 Umrechnen der Nachkommazahl 0,4 0,4 * 2 = 0,8 0 0,8 * 2 = 1,6 1 0,6 * 2 = 1,2 1 0,2 * 2 = 0,4 0 0,4 * 2 = 0,8 0... 0 1 1 0 0 21,4=10101,011001100110...*2 0 = 1,0101011001100110...*2 4 19 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
IEEE 754 Gleitkommazahlen: Beispiel 21,4=10101,011001100110...*2 0 = 1,0101011001100110...*2 4 Neuer Exponent (Charakteristik) = Alter Exponent + 127 4 + 127 = 131 Umrechnen der Charakteristik: 131 % 2 = 1 65 % 2 = 1 32 % 2 = 0 16 % 2 = 0 8 % 2 = 0 4 % 2 = 0 2 % 2 = 0 1 % 2 = 1 1 0 0 0 0 0 1 1 Vorzeichen: Positiv = 0 Gleitkommazahl: 0 10000011 01010110011001100110011 20 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Jetzt sind Sie gefragt! Was ist die größte darstellbare positive Gleitkommazahl nach IEEE 754 Single Precision in binärer Darstellung? 0 1111 1110 1111 1111 1111 1111 1111 111 3.4028235 * 10 38 Was ist die zweit größte darstellbare positive Gleitkommazahl nach IEEE 754 Single Precision in binärer Darstellung? 0 1111 1110 1111 1111 1111 1111 1111 110 3.4028233 * 10 38 Was ist die Differenz zwischen den beiden Zahlen? 3.4028235 * 10 38-3.4028233 * 10 38 = 2 * 10 31 http://inta.fzi.de/inta Umfrage-IDs: 97, 98, 99 21 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
ASCII- und Unicode-Zeichen: char Werte: Zeichen-Literale: A, 3, % Escape-Sequenzen: \n, \007, \u05d0 Operatoren: Wie bei Ganzzahl-Typen (Werte entsprechen ASCII- bzw. Unicode-Nummern) Beispiele: a + 1 = 98 a * b = 9506 22 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Datentyp String Datentyp (Klasse) für Zeichenketten: String Beispiele: String text = Das ist ein Text String greeting = Hallo! String address = Am Fasanengarten 5\n76131 Karlsruhe Operationen: U.a. Konkatenation ( Verkettung ) String result = Dies ist + eine Konkatenation String greetingandaddress = greeting + address String result = Dies ist + keine Konkatenation 23 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Aufzählungs-Datentyp: enum Werte: Benutzerdefiniert Eine Liste der möglichen Werte des Typs wird explizit angegeben Beispiele: enum CompassDirection { NORTH, EAST, SOUTH, WEST } enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } enum Color { RED, GREEN, BLUE } Schema (analog zu Klassendeklaration): enum Name { Liste der Werte } Operationen: Müssen vom Benutzer angegeben werden (analog zu Klassenmethoden; mehr dazu in einer späteren Vorlesung) 24 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Quiz http://inta.fzi.de/inta 101 102 103 104 1. Warum ist der Wert von 10^6 nicht 1 000 000 sondern 12? 2. Kann man mit (a < b < c) testen, ob diese drei Zahlen geordnet sind? 3. Kann man die Operatoren < und > verwenden, um String- Variablen zu vergleichen? 4. Was ist das Ergebnis von 1/0 in Java? 105 5. Was ist das Ergebnis von 1.0/0.0 in Java? 25 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Variablen Eine Variable ist ein Platzhalter für Werte eines Datentyps Z.B.: x + y > 4 Variablendeklaration: Notwendig vor Verwendung einer Variablen; legt Name und Typ der Variablen fest Schema: Typ Name; oder Typ Name 1,..., Name n ; Beispiele: float a; int x, y, z; Zuweisung: Setzen eines Wertes Schema: Name = Wert; Initialisierung: Kombination von Deklaration und Zuweisung Anstelle von float a; a = 2.5; kann man float a = 2.5f; schreiben Schema: Typ Name = Wert; Wo sind uns Variablen bisher begegnet? In Ausdrücken und als Attribute in Klassen 26 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Zuweisung Variablen können ihren Wert ändern z.b.: Änderung des Zustands eines Objekts Zuweisung: Setzen eines Wertes Zuweisungsoperator: = Beispiele: x = y; ändert den Wert der Variablen x und setzt ihn auf den Wert der Variablen y. x = x + 1; nimmt den bisherigen Wert von x, addiert 1 und setzt Variable x auf den neuen, eins größeren Wert Anweisung x Wert der Variable initial 10 6 x = x + 1 11 6 x = y 6 6 y = 2*x+1 6 13 y 27 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Zuweisung: Anmerkungen Die Notation x = x + 1 hat nichts mit mathematischer Gleichheit zu tun! Die Zuweisung ist keine symmetrische Operation! x = y; ändert den Wert von Variable x y = x; ändert den Wert von Variable y 28 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Zuweisung: Attribute setzen Attribute werden mit Objektname.Attributname angesprochen Beispiele: Vector2D p = new Vector2D(); p.x = 4.0; p.y = 22.5; Vector2D q = new Vector2D(); q.x = 1.2E5; q.y = -0.36;... Vector2D p x 4.0 y 22.5 Vector2D q x 1.2E5 y -0.36... 29 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Mehr zu Variablen Eine Variable ist ein Name für einen Speicherplatz x 0 int Variablenname Wert ( Gefäßinhalt ) Typ Speicherplatz ( Gefäß ) Nach einer Zuweisung ist der neue Wert in der Variable gespeichert, der alte wird überschrieben x 0 int Zuweisung: x = 4295 x 4295 int 30 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Variablen und Speicher: Speicherabbild Der Hauptspeicher besteht aus einer Reihung von Speicherplätzen Die Speicherplätze sind durchnummeriert ( Speicher-Adressen ) Anmerkung: x 0 int y 3 int z 12 int a 44 int b 0 int 01 02 03 04 05 06 07 08 09 Wir haben hier eine abstrakte Sicht auf den Speicher angenommen In Wirklichkeit kann an jeder Speicheradresse nur 1 Byte (8 Bit) gespeichert werden. Größere Datentypen werden auf mehrere aufeinanderfolgende Adressen verteilt (z.b. benötigt ein int vier aufeinanderfolgende Adressen). Für unsere Zwecke ist die abstrakte Sicht jedoch ausreichend c 20 int d 3.4 float e 0 int f -2 int 31 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Objekt-Variablen / Referenzen Bei Objekten werden die Attribute an aufeinanderfolgenden Speicheradressen abgelegt ( Objekt-Identität ) Beispiel: Objekt des Typs Vector2D mit den Attributen x=2.0 und y=3.5 x 2.0 float y 3.5 float 14 15 16 17 18 19 20 21 Objekt-Variablen selbst sind Referenzen auf Objekt-Identitäten, d.h. in der Objekt-Variable wird die Speicheradresse der Objekt-Identität (genauer: des ersten Attributs) abgelegt Beispiel: Variable pos des Typs Vector2D pos 17 Vector2D x 2.0 float y 3.5 float 14 15 16 17 18 19 20 21 32 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Beispiel Objekt-Referenzen Betrachten wir die folgende Situation: p = new Vector2D(2.0, 3.5); q = new Vector2D(1.2, 9.4); r = p; p 17 Vector2D q 20 Vector2D r 17 Vector2D x 2.0 float y 3.5 float x 1.2 float y 9.4 float 14 15 16 17 18 19 20 21 Dann Zuweisung p = q: p 20 Vector2D q 20 Vector2D r 17 Vector2D x 2.0 float y 3.5 float x 1.2 float y 9.4 float 14 15 16 17 18 19 20 21 Mehrere Referenzen können auf dieselbe Objekt-Identität verweisen! Die Objekt-Identität vom ursprünglichen p (an Speicheradresse 17) wird bei der Zuweisung p = q nicht verändert! 33 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Objekt-Identitäten und Zuweisung vorher Zuweisung p = q nachher Objekt- Referenzen Objekt- Identitäten Objekt- Referenzen Objekt- Identitäten 14 p: 17 17 x: 2.0 14 p: 20 17 x: 2.0 18 y: 3.5 18 y: 3.5 15 q: 20 20 x: 1.2 15 q: 20 20 x: 1.2 16 r: 17 21 y: 9.4 16 r: 17 21 y: 9.4 Bei Zuweisungen von Objekt-Variablen werden nur die Objektreferenzen verändert! 34 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Objekt-Identitäten und Zuweisung vorher Zuweisung p.x = 7.5 nachher Objekt- Referenzen Objekt- Identitäten Objekt- Referenzen Objekt- Identitäten 14 p: 17 17 x: 2.0 14 p: 17 17 x: 7.5 18 y: 3.5 18 y: 3.5 15 q: 20 20 x: 1.2 15 q: 20 20 x: 1.2 16 r: 17 21 y: 9.4 16 r: 17 21 y: 9.4 Mehrere Referenzen (hier: p und r) können auf dieselbe Objekt-Identität verweisen. Man spricht dann von Aliasing. Bei Zuweisungen von Objekt-Attributen können durch Aliasing die Attribute anderer Objekte verändert werden: nach der Zuweisung p.x = 7.5 gilt auch r.x == 7.5 35 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
null, Konstantendeklaration null: Objektvariablen können den speziellen Wert null annehmen, z.b.: Vector2D p = null; Die Objektreferenz null steht für kein Objekt, d.h. es ist kein Zugriff auf Attribute oder Methoden über diese Referenz möglich Die Objektidentität wird erst mit Aufruf des new-operators erstellt, z.b.: p = new Vector2D(); Konstantendeklaration: Analog zu Variablendeklaration unter Verwendung des Zusatzes final Schema: final Typ Name = Wert; Beispiele: final float gravitationearth = 9.80665; final float Pi = 3.14159265; 36 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Überprüfung der Datentypen In Java haben alle Variablen einen Datentyp. Der Datentyp muss zur Compile-Zeit bekannt sein. Der Typüberprüfung wird vom Compiler und von der JVM überprüft. Die erlaubten Operatoren hängen vom jeweiligen Datentyp ab. 37 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements
Zusammenfassung Typen: Java kennt 8 elementare Datentypen (int, float,...) Klassen sind auch Datentypen Mit jedem Datentyp sind Operationen bzw. Methoden verbunden Variablen: Variablen sind Namen für Speicherplätze Variablen können durch Zuweisung verändert werden Objekt-Variablen sind Referenzen, d.h. Speicheradressen von Objekt- Identitäten Der spezielle Objekt-Referenzwert null steht für kein Objekt 38 02.11.2016 Vorlesung Programmieren: Typen und Variablen Jun.-Prof. Dr.-Ing. Anne Koziolek, Arbeitsgruppe Architecture-Driven Requirements