Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt. Tabelle 1: Typ Größe Minimum Maximum Defaultwert Beispiel boolean 1-bit - - false false char 16-bit Unicode 0 Unicode 2 16-1 \u0000 (null) a byte 8-bit -128 +127 (byte) 0 34 short 16-bit -2 15 +2 15-1 (short) 0 21345 int 32-bit -2 31 +2 31-1 0 42322554 long 64-bit -2 63 +2 63-1 0L 134567L float 32-bit 0.0f 3.1415f double 64-bit 0.0d 325.3245d void - - - Beispiele: double radius; float umfang; int anzahl = 2; char a = c ; W. Süß 1 Primitve Datentypen etc.
Operatoren mathematische Operatoren: Tabelle 1: Operator Bedeutung Art Resultat Beispiel ==,!= Gleichheit, Ungleichheit binär boolean a == 12 <, <=, >, >= Vergleich binär boolean a >= 128 +, - Addition, Subtraktion binär numerisch a + 12 *, / Multiplikation, Division binär numerisch a / 2 % Modulo binär numerisch a % 2 ++, -- Inkrement, Dekrement unär numerisch i++ =, +=, -=, *=, /=, %= Zuweisungsoperator binär numerisch a *= 2 logische Operatoren Operator Bedeutung Art Resultat Beispiel ==,!= Gleichheit, Ungleichheit binär boolean b1 == b2! Negation unär boolean! b2 & Und (vollständig) binär boolean b1 & b2 && Und (kurzauswertung) binär boolean b1 && b2 Oder (vollständig) binär boolean b1 b2 Oder (kurzauswertung) binär boolean b1 b2 Konstanten soll eine Variable nicht geändert werden dürfen, so wird es mit dem Attribut final versehen: final float PI = 3.141592f; W. Süß 2 Primitve Datentypen etc.
Ausgabe In der Klasse java.lang.system realisiert. Drei Streams: Standardausgabe:System.out Standardfehlerausgabe: System.err Standardeingabe: System.in Ausgabe auf Konsole (stdout, stderr): System.out.println("Ich bin eine Zeile"); System.out.print("Ich bin"); System.out.println(" eine Zeile"); System.err.println("Aaaargghh ich steeer..."); W. Süß 3 Primitve Datentypen etc.
Ein erster Programmierversuch: Datei HelloWorld.java in Editor (z.b. notepad) erstellen: class HelloWorld Hello World public static void main (String args[]) System.out.println("Hello World!"); DOS Fenster öffnen Programm übersetzen: d:\user\smiff> javac HelloWorld.java Wenn kein Fehler aufgetreten ist, wurde die Datei HelloWorld.class angelegt d:\user\smiff\> dir Hello* HelloWorld.class HelloWorld.java d:\user\smiff> Programm laufen lassen: d:\user\smiff> java HelloWorld Alternative: Verwendung von Joe W. Süß 4 Primitve Datentypen etc.
Eingabe Einlesen von Konsole: (mit Ausnahmebehandlung) byte buffer[] = new byte[80]; int num_char; String input = ""; System.out.print("Bitte gib mal was ein: "); try num_char = System.in.read(buffer, 0, 80); input = new String(buffer,0, num_char); catch (IOException e) System.err.println("IO Fehler"); System.out.println(">>>>>>" + input); Benutzung der Klasse Utils: Zur Vereinfachung kann die Klasse Utils in das Programm importiert werden, die das Einlesen erleichtert. Utils ist auf der Homepage verfügbar. W. Süß 5 Primitve Datentypen etc.
Beispielprogramm zur Eingabe import Utils; class InputDemo // kleines Demo Programm zur Demonstration // der Eingabemethoden // Utils.inputInteger(...) // Utils.inputString(...) // Utils.inputFloat(...) public static void main(string argv[]) String str = Utils.inputString(" gib Text ein:"); int z = Utils.inputInteger("und jetzt ne Zahl:"); float f = Utils.inputFloat("und ne Gleitkommazahl:"); System.out.println(" String: " + str ); System.out.println("Integer: " + z ); System.out.println("Float: " + f); W. Süß 6 Primitve Datentypen etc.
Kontrollfluß und Schleifen if - else if (boolscher Ausdruck) statement else statement Beispiel: if (a % 2 == 0) System.out.println( a ist gerade ); else System.out.println( a ist ungerade ); While Schleife while (boolscher Ausdruck) statement Beispiel: i = 1; a = 0; while (a < 10) a = a + i; i = i + 1; W. Süß 7 Primitve Datentypen etc.
Beispiel: Ausgabe der Zahlen von 1 bis 100: class Ausgabe1bis100 public static void main (String args []) int i=1; while ( i<101) System.out.println(i); i++; W. Süß 8 Primitve Datentypen etc.
Schleifen do - Schleife do statement while (boolscher Ausdruck); Beispiele (Test zu Beginn/Ende der Schleife): do System.out.println(a); a++; while (a < 50); while (a < 50) System.out.println(a); a++; for - Schleife for (init; boolscher Ausdruck; Schritt) statement Beispiel: for (int i = 1; i < 100; i++) System.out.println( i = + i); W. Süß 9 Primitve Datentypen etc.
Beispiel: Ausgabe der Zahlen von 1 bis 100 mit do-while: class Ausgabe1bis100 public static void main (String args []) int i=1; do System.out.println(i); i++; while ( i<101); Ausgabe der Zahlen von 1 bis 100 mit for: class Ausgabe1_100 public static void main (String args []) for (int i=1; i<101; i++) System.out.println(i); W. Süß 10 Primitve Datentypen etc.
Beispiel: Aufsummieren der Zahlen von 1 bis 50 public class Summe public static void main (String args[]) int summe=0; for (int i= 1; i<=50; i++) summe = summe + i; System.out.println( summe = + summe); W. Süß 11 Primitve Datentypen etc.
break: Beendigung der Schleife und fortfahren mit der nächsten Anweisung nach der Schleife while (true) if (i > 100) break; System.out.println( i= + i); i++; continue: Abbruch des aktuellen Schleifendurchlaufs und Sprung zum nächsten Schleifendurchlauf while (i <=100) if (i% 2==0) continue; System.out.println(i); i++ W. Süß 12 Primitve Datentypen etc.
Switch Statement switch (Selektor) case wert1: statement; break; case wert2: statement; break; //... default: statement; Beispiel: public class Switch public static void main (String args[]) for (char c=65; c < 91; c++) switch (c) case A : case E : case I : case O : case U : System.out.println(c + ist ein Vokal ); break; case X : System.out.println( Das + c + ist mein Lieblingsbuchstabe ); break; default: System.out.println(c + ist ein Konsonant ); W. Süß 13 Primitve Datentypen etc.
Strings Ein String ist ein Java Objekt Erzeugung: String s1 = "Hallo"; String s2 = new String("wie gehts"); String s3 = "Ein \"String\" mit Anführungszeichen"; Verkettung von Strings: String s4 = s1 + " " + s2 + "?"; Umwandlung einfacher Datentypen in Strings: float f = 1.234f; String s = Float.toString(f); Umwandlung von Strings in einfache Datentypen: String intstr = "353"; int i = Integer.parseInt(intStr); short s = Short.parseShort(intStr); Methoden der Klasse String: Vergleich: boolean equal = s1.equals(s2) equal = s1.equalsignorecase(s2); Länge ermitteln: int len = s1.length() Liste aller Methoden : http://java.sun.com/products/jdk/1.2/docs/api/java/ lang/string.html W. Süß 14 Primitve Datentypen etc.
Beispiele: Programm das alle durch 3, 5 oder 7 teilbaren Zahlen kleiner 200 ausgibt: class C357 public static void main (String args []) for (int i=1; i<201; i++) if (i%3 == 0 i%5 == 0 i%6 == 0) System.out.println(i+ ist durch 3,5 oder 7 teilbar ); W. Süß 15 Primitve Datentypen etc.
Programm, das die folgende Ausgabe erzeugt: * *** ***** ******* ********* *********** class Baum public static void main (String args []) int zeilen=10; for (int i = zeilen; i >0; i--) for(int j=0;j<i;j++) System.out.print( ); for(int j=0;j<2*(zeilen-i)-1;j++) System.out.print( * ); System.out.println(); W. Süß 16 Primitve Datentypen etc.
Aufgaben Erstellen zu den in den Aufgaben 1 bis 4 aus der Vorlesung Algorithmen erstellten Algorithmen die zugehörigen Java-Programme. W. Süß 17 Primitve Datentypen etc.