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