Sprachkonstrukte Einführung in Java Folie 1 von 20 12. Mai 2011 Ivo Kronenberg Inhalt • Kommentare • Identifier (Bezeichner) • Variablen • Numerische Ausdrücke und Typen • Kontrollstrukturen – – – – Verzweigungen Bedingungen Schleifen Zuweisungen Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 2 von 20 Kommentare • Zeilenkommentar // hier kann irgendetwas stehen • Blockkommentar /* hier kann auf mehreren Zeilen eine Erklärung stehen */ • Dokumentation (Javadoc) /** * Hier steht die Dokumentation zur Klasse, * Methode oder Attributt */ Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 3 von 20 Schreiben von JavaDoc Kommentaren Online: http://java.sun.com/j2se/javadoc/writingdoccomments/ Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 4 von 20 Identifier (Bezeichner) • Wählbarer Name von – Klassen – Variablen – Methoden • Bestehend aus – Buchstaben – Zahlen – Underscore (_) • Einschränkung – Reservierte Schlüsselwörter dürfen nicht als Identifier benutzt werden (z.B. class, enum) – Erstes Zeichen darf keine Zahl sein – Case Sensitive (sum != Sum) – Beachte Konventionen Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 5 von 20 Schlüsselwörter in Java Online: http://download.oracle.com/docs/cd/E17409_01/javase/tutoria l/java/nutsandbolts/_keywords.html Programmieren mit Java, Anhang A, Seite 445 Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 6 von 20 Variablen • Definition – Modifier Typ Idenetifier: final int zero; • Wertzuweisung (Ausdruck) – Identifier = Wert: zero = 0; – Selbstzuweisung: a = a; • Initialisierung – Defintion mit Wertzuweisung: int zero = 0; Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 7 von 20 Numerische Ausdrücke • Operatoren Grundrechenarten – – – – – • + * / % Addition Subtraktion Multiplikation Division Modulo (Divisionsrest) Auswertung von Ausdrücken – Punkt vor Strichrechnung – Assoziativität von links nach rechts • Sonderfall Division – int resultat = 5 / 3 Sprachkonstrukte | Ivo Kronenberg => 1.6666? 12. Mai 2011 Folie 8 von 20 Numerische Typen Typ Grösse Min. Wert (Byte) Max. Wert byte 1 -2^7 +2^7-1 short 2 -2^15 +2^15-1 int 4 -2^31 +2^31-1 long 8 -2^63 +2^63-1 float 4 1.40129*10^-45 3.40282*10^38 double 8 4.94065*10^-324 1.79769 * 10^308 Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 9 von 20 Typenkonversion • Implizite Typenkonversion – Kompatible Typen können automatisch konvertiert werden: double zahl = 15; • Explizite Typenkonversion – Erzwungene Typenkonversion (Typecast): int zahl = (int) 15.3; – Laufzeitfehler bei ungültiger Konversion Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 10 von 20 Kontrollstrukturen – Verzweigungen • Verzweigung (if-Anweisung) if (month == 2) days = 28; else if (month == 4 || month == 6 || month == 9 || month == 11) days = 30; Dangling Else else days = 31; Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 11 von 20 Kontrollstrukturen – Auswertung Bedingungen • Boolscher Datentyp (Wahrheitswerte): boolean result = true; • Vergleichsoperatoren (relationale Operatoren): – – – – – – • < <= > >= == != kleiner kleiner gleich grösser grösser gleich gleich ungleich Logische Operatoren (Verknüpfen von mehrerer Bedingungen): – – – – && || ^ ! logisches Und logisches Oder exklusives logisches Oder (Xor); Genau ein Operand ist true logisches Nicht Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 12 von 20 Kontrollstrukturen – Blöcke • Geschweifte Klammern zur Gruppierung (Block) • Beliebige Anzahl Anweisungen in Block (0 - ∞) • Verschachtelungstiefe beliebig (Blöcke können ineinander verschachtelt werden) • if(month == 2) { days = 28; } else { if(month <8) { days = 30 + (month % 2); } else { days = 31 - (month % 2); } } Sprachkonstrukte | Ivo Kronenberg If-Kaskade 12. Mai 2011 Folie 13 von 20 Kontrollstrukturen – Schleifen • Wiederholte Ausführung von Anweisungen • int month = 1; while(month <= 12) { month = month +1; } Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 14 von 20 Kontrollstrukturen – Schleifen • Vorzeitiger Abbruch von Schleife mit break int i = 0; while(true) { i++; if(i >= 12) break; } • Schleifenkurzschluss mit continue Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 15 von 20 Kontrollstrukturen – Zuweisung • Operatorzuweisung – – – – • += -= /= *= addiert zum Variablenwert subtrahiert vom Variablenwert dividiert den Variablenwert multipliziert den Variablenwert Inkrement und Dekrement – ++ Addiert 1 zum Variablenwert – -- Subtrahiert 1 vom Variablenwert • Präfix und Postfix – Inkrement bzw. dekrement und Abfrage von Wert in einem. – Präfixoperator (Anweisung vor Abfrage) – Postfixoperator (Abfrage vor Anweisung) – int x = 1; int y = x++; // y = 1 y = ++x; // y = 3 Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 16 von 20 Kontrollstrukturen – Bedingter Operator • Verwendung für Variablenzuweisung • Syntax: Variable = Bedingung ? Ausdruck : Ausdruck int days = (month == 2) ? 28 : 31; Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 17 von 20 Kontrollstrukturen – Gültigkeitsbereiche (Scope) • Sichtbarkeit – Eine Variable ist innerhalb eines Blockes und der darin verschachtelten Blöcke gültig • Namenskonflikte – Eine Variable darf in einem Sichtbarkeitsbereich nur einmal definiert werden. – Blöcke der gleichen Verschachtelungstiefe dürfen die gleiche Variable definieren: while(…) { int tmp = …; } while(…) { int tmp = …; } Sprachkonstrukte | Ivo Kronenberg 12. Mai 2011 Folie 18 von 20 Kontrollstrukturen – for - Schleifen • Alternatie zu while Schlaufe identisch int i = 0; while(i < 10) { i++; … } Sprachkonstrukte | Ivo Kronenberg for(int i = 0; i < 10; i++) { … } 12. Mai 2011 Folie 19 von 20