HTML-CODE: public static void countList(){ außerhalb
Datentypen <applet codebase="/" System.out.println("Die Liste enthaellt " + liste.size() + " des Pakets code="GutenMorgen.class" Bez Byte Werte Ganz VZ Stel Eintraege."); width=300 height=120 alt="Applet Von einer Ja Ja Ja Nein futsch."> } boolean 1 Byte true/false ja nein 1 public static void showList() { Subklasse im <param name="text" value="Parammeter!"> char 2 Byte Unicode ja nein 1 System.out.println("Die Liste selben Paket </applet> byte 1 Byte 27..27-1 ja ja 3 enthaelt folgenden Inhalt \n+"+liste.toString()); Von einer Ja Ja Nein Nein short 2 Byte 215..215-1 ja ja 7 Die HTML und der ByteCode befinden sich im } Subklasse int 4 Byte 231..231-1 ja ja 10 selben Verzeichnis. public static void main (String [] außerhalb long 8 Byte 263..263-1 ja ja 19 args) { des Pakets float 4 Byte 10-38..1038 nein ja 6..7 Sequenz & Verzweigung addList(); addList(); Zählschleife countList(); Variablentypen Exception Handling for( int i = 0; i <= feld.length; i++) } showList(); Lokale Variablen class{ methode() { float a) Wie wird dieses Konzept bezeichnet ? {System.out.println(feld[i]);} } EineKlassenVariable;} } Ausnahmebehandlung / Expection Handling System.out.println("Anz.: "feld.legth()); Klassenvariablen class{ static float b) Was wird mit diesem Sprachelement erreicht ? for( feld : zugriffsvariable} ArrayList ermöglichen EineKlassenVariable; } {System.out.println(zugriffsvaiable);} Referenzielle Datentypen (Felder) welche Daten mit Abfangen von Laufzeitfehlern. Instanzvariablen class{ float EineKlassenVariable; } Bedeutung Schlüsselworte: Bedingungsschleife verschiedenen Datentypen enthält // Zugriff mit this.EineKlassenVariable; try Beginn des geschützten Bereichs import java.util.*; Konstanten class{ methode() { final float int i = 1; class {private static ArrayList <Object> catch Kennzeichnet den Beginn des Blocks while ( i <= 10) { i++; } liste = new ArrayList <Object> (); konstentenVariable;} } zum Auffangen und Reagieren auf Fehler. do { i++; } while(i<=10); methode() {liste.add(new finally Wird auf jedenfall ausgeführt throws "Wirft" die Exception an höhrere Methode. Verzweigungen String);list.set(index,WERT);liste.remove( index) Zeichen & Zeichenketten if(true) {} else {} String var = new String("Zeichenkette"); Throw Bietet Möglichkeit, selber Exceptions try { for (Iterator e = liste.iterator () ; Strng var = "Zeichenkette"; auszulösen. Mehrfachverzweigung e.hasNext () ;) { char var = 'z'; // einfache Anf.Zeichen Beispiele: switch(antwort) { zeigerInt = liste.indexOf(e.next());}} int var = 4; // keine Anführungszeichen case 's': }} catch(ArrayIndexOutOfBoundsException e){} doSomeThing(); catch(ArithmeticException e) { //DivNULL} break; Ein- und Ausgabe catch(IOException e) { // Eingabefehler} catch(NumberFormatException e) {//Zahl? } default: doSomeThing(); Typumwandlung Console Wir eingebunden durch java.lang; } (auch Typ-Konvertierung, Typ-Casting, Typ- import Console.java; Konversionen) class { methode() { Aufgabenbeispiel Applet GutenMorgen Ausgabe der von des aktuellen Wertes von t, Sinus Typeinengungen (engl. casting) kann es zu zahl = Console.getInt("Bitte geben sie Informationsverlusten kommen. eine Zahl ein!"); von t und Cosinus von t solange bis PI erreicht ist. Typeinengungen sind immer explizit anzuweisen. JAVA-CODE: }} import java.applet.*; Dazu dient der cast-Operator. double i = 12345678; Klassisch import java.awt.*; public class GutenMorgen extends Applet { Array und ArrayList 012 int d = (int) i; import java.io.*; class { methode() throws IOException { Image picture; BufferedReader br = new AudioClip sound; public void init() { Array Typ[] Name = new Typ[Anzahl]; Modifizierer BufferedReader(new sound = getAudioClip(getCodeBase(), InputStreamReader(System.in)); Typ Name[] = new Typ[Anzahl]; Erreichbarkeit public protected default private System.out.print("Bitte geben Sie "WelchWunderschoenerTag.au"); picture = getImage(getCodeBase(), Beispiel Ihren Vornamen ein: "); "Sonnenaufgang.jpg"); String [] mystring = Innerhalb Ja Ja Ja Ja vorname = br.readLine(); } {"eins","zwei","drei"} derselben }} public void start({ sound.loop();} mystring[2] = "vier"; Klasse public void stop(){ sound.stop();} public void paint(Graphics g) { System.out.println("Anz"+mystring.lenght); Von einer Ja Ja Ja Nein Dateien und Datenströme g.drawImage(picture, 0, 0, this); ArrayList in Telefonliste beliebiger g.drawString("Hello World!",30,30); import java.util.*; Eingabestrom Klasse im } public class TelefonListe { import java.io.*; private static ArrayList <String> liste selben Paket public class TextAusDateiLesen{ public void destroy(){sound.stop();} } = new ArrayList <String> (); public static void main (String [] args) Von einer Ja Nein Nein Nein throws IOException { public static void addList() { liste.add(Console.inpString()); beliebiger String datei = "Die_zwei_Wurzeln.txt"; } Klasse FileReader fr = new FileReader(datei); GdProg 1 – Formelsammlung
BufferedReader br = new BubbleSort Rekursiv System.out.println(i+"..."+z); Mulitplikation Iterativ
BufferedReader(fr); public static void main (String args[]) { z=z*2; pub. static int multiFor(int n, int fak){ System.out.println("Gedicht von Christian int[] werte = {3, 7, 1, 9, 2, 5, 2}; }// Ende for int erg = 0; Morgenstern:"); werte = bubbleSort (werte); }// Ende if for( int k=0; k < fak; k++) { while(br.ready()) for (int i = 0; i < werte.length; i++) } erg += n; System.out.println(br.readLine()); { Zweierpotenz Rekusiv } } System.out.print (werte[i] + " "); public static long zp(int n){ return erg; } } long z = 2; } } if(n > 1 && n< 64) { Vorteile der Rekursion Rekursion Fakultätsberechnung rekusiv int rekursiv(int zahl){ z = 2*zp(n-1); } • Eine rekursive Lösung ist natürlicher und Rekursion Bezeichnet eine sich selbst aufrufende if (zahl == 1) // Abbruch bei 1 System.out.println(n + " " + z); dadurch klarer als eine iterative Lösung. Methode mit einer Abbruchbedingung. return 1; return z; • Eine rekursive Lösung ist deutlich kürzer Wenn sich Probleme in fast identische Teilprobleme else } als die iterative Variante. return zahl * rekursiv(zahl - 1); „Türme von Hanoi“ Rekursiv zerlegen lassen, dann sind diese oftmals durch • Die Korrektheit rekursiver Lösungen ist }} hanoi(int n, int from, int to, int aux) { rekursive Algorithmen lösbar. meist leichter zu überprüfen. Fakultätsberechnung iterativer if(n == 1) Beispiele int iterativ (int zahl){ System.out.println(n+": "+from Nachteile Quicksort Rekusiv int i = 1; // Schleifenvariable +"->"+ to); • Die rekursive Lösung benötigt mehr class QuickSort{ vereinbaren else { Speicherplatz. Sie kann dabei den public static int[] quick(int[] reihe, int f = 1; // Variable für hanoi(n - 1, from, aux, to); Zwischenprodukt System.out.println(n + ": " + from Laufzeitstack effizient ausnutzen. int u, int o) { int i = u, j = o, median; while (i <= zahl){ // + "-->" + to); • Bei grosser Rekursionstiefe steigt die median = reihe[(u + o) >> 1]; Berechnungsschleife hanoi(n - 1, aux, to, from); Laufzeit stark an. do { f = i * f; // Teilprodukt } i++; // Schleifenzaehler erhoehen } Programmentwicklung while (reihe[i] < median) i++; } 1. Editieren 2. Compilieren 3. Ausführen while (median < reihe[j]) return f; // Rueckgabe des j--; Fakultaetswertes if (i <= j) { } int temp = reihe[j]; reihe[j] = reihe[i]; Potenz Iterativ pub. static int potenzFor(int n, int pot){ Glossar reihe[i] = temp; int erg = 0; Cast-Operator Dient der explizieten Zuweisung i++; for( int k=0; k < pot; k++) { CLASSPATH Systemvariable die der JVM & JVC erweiternde Klassen sichtbar macht j--; erg += n; Deklarierung Variable mit Typ und Bezeichner festlegen; } } } while (i < j); = Variable mit Typ und Bezeichner festlegen; return erg; if (u < j) } import Dient zum Zum Sichtbarmachen anderer Klassen. quick (reihe, u, j); public static long potenzWhile(int n) { Initialisierung Zuweisung eines Anfangswertes an eine Konstante oder Variable if (i < o) long erg = n; Instanziierung Bereitst. von Speicherplatz f. Vari. quick (reihe, i, o); while(n > 2) { Instanzvariablen beschreiben die Eigenschaften einzelner Objekte einer Klasse. (gelten nur dort) return reihe; erg += n-1; Java-Beans sind fertige Programmkomponnenten für die visuelle Entwicklung von Oberflächen } n--; } Java-Byte-Code Maschinenunabh. ProgCode, der vom Java-Compiler erzeugt u. auf jeder JVM } ausführbar BubbleSort Iterativ return erg; } JVM Software die Java-Byte-Code interpretiert und in Befehle für den Prozessor des static int[] bubbleSort (int[] liste) { boolean sortiert; Potenz Rekursiv Rechners umsetzt. do { public static int potRekursiv(int x, int Klassenvariablen (static) sind Attribute die für alle Instanzen der jeweiligen Klasse gültig sind. sortiert = true; y){ Kommentar Ist eine Textzeile die rein Informativen Charakter hat. for (int i = 0; i < liste.length – int result = 0; Kompilieren Umwandlung des Quellcodes.java in Bytecode.class 1; i++) { if(y == 0){ Konstante Eine Konstante ist im Gegensatz zur Variablen ein unveränderlicher Wert if (liste[i] > liste[i + 1]) { result = 1; zugewiesen hat. // Tauschen: }else{ int temp = liste[i]; Konstruktor result = x * potRekursiv(x, y-1); liste[i] = liste[i + 1]; Lokale Variablen gelten nur innerhalb einer Methode. } liste[i + 1] = temp; return result; Modifizierer Schlüsselwörter die die Zugriffsrechte auf Attribute, Methoden und Klassen // Nicht sortiert! } beschreiben. (private, satic puiblic, protected) sortiert = false; Rekursion Bezeichnet eine sich selbst aufrufende Methode mit einer Abbruchbedingung Zweierpotenz Interativ ( 0 < n 64 ) } Sandbox gesicherten Speicherbereich mit begrenzten Ausführungsrechten für Applets } public static void zp(int n){ } while (!sortiert); long z = 2; StringBuffer Zeichenkette vom Typ String bei der Veränderungen möglich sind return liste; if(n<64) { Typenumwandlung Explizit Mit Cast Operator: int var = (float) var; } for(int i = 1;i<=n; i++){ Typenumwandlung Implizit ohne Castoperator: int var = byte var;