Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Indirekte Adressierung

Ähnliche Präsentationen


Präsentation zum Thema: "Indirekte Adressierung"—  Präsentation transkript:

1 Indirekte Adressierung
Richard Göbel

2 Einfache Speicherung von Daten
Eine "einfache" Deklaration definiert direkt einen Speicherplatz für den angegebenen Datentyp Bei den folgenden Operationen werden Kopien der gespeicherten Daten erzeugt: Zuweisung (z.B. x = y) Aufruf einer Funktion (z.B. f(x)) Eine Vergleich überprüft die Gleichheit der enthaltenen Daten int x = 17; 17 x:

3 Indirekte Adressierung - Idee
Bei einer Deklaration für indirekte Adressierung wird nur Speicherplatz für eine Adresse (Zeiger, Pointer, Referenz) reserviert. Bei den folgenden Operationen werden Kopien der Adressen und nicht der Daten erzeugt: Zuweisung (z.B. x = y) Aufruf einer Funktion (z.B. f(x)) Eine direkter Vergleich überprüft die Gleichheit der enthaltenen Adressen und nicht der Daten! Student s = new Student(); s: Student name: “Meier“ alter: 19

4 Referenzen - Beispiel . . . public class C { int v1; int v;
} public class T static void RefFunc (C c) c.v = 2; static void ValFunc (int v) v = 2; . . . int v1; C v2 = new C(); v1 = 1; T.ValFunc(v1); System.out.println(v1); v2.v = 1; T.RefFunc(v2); System.out.println(v2.v);

5 Referenzen - Eigenschaften dieses Konzepts
Java stellt sicher, dass jede Referenz nur auf eine Instanz der zugehörigen Klasse verweist: Der Compiler überprüft das Programm auf falsche Zuweisungen und Aufrufe. Cast-Operatoren überprüfen während der Laufzeit den Typ der zugehörigen Objekte. Der benötigte Speicherplatz für alle referenzierten Objekte wird automatisch belegt und wieder freigegeben. Fehler des Programmierers bei der Speicherverwaltung sind damit ausgeschlossen!

6 Zeichenketten - Basisoperationen
Erzeugen von Zeichenketten: String s = “Test“; String t = new String(“Test2“); Vergleich von Zeichenketten: s.equals(t); Zugriff auf Zeichenketten einzelnes Zeichen: s.charAt(2) // ‘s‘ Teilzeichenkette: s.subString(1,3) // “es“ Weitere Operationen Zusammenhängen: s + t // “TestTest2“ Länge der Zeichenkette: s.length() // 4

7 Zeichenketten - Eigenschaften von Operationen
Operationen auf Zeichenketten ändern die Ausgangswerte nicht. Einige Operationen kopieren Teile der Ausgangswerte In einigen Situationen kann die Laufzeit eines Java-Programms durch häufiges Benutzen von Operationen auf Zeichenketten und dem damit verbundenen Kopieraufwand erheblich verlängert werden. while ( ) { c = str.read(); s = s + c; }

8 Zeichenketten - Datenstruktur StringBuffer
Erzeugen eines Stringbuffer Anhängen von Zeichenketten mit der Methode append. Konvertieren des endgültigen Werts mit dem Konstruktur String in ein Objekt vom Typ String. char c; StringBuffer sb; String s; sb=new StringBuffer(1000); while ( ) { . . . c = str.read(); sb = sb.append(c); } s = new String(sb);

9 Zeichenkette - Methode toString
Mit der Methode toString wird eine Zeichenkette für ein Objekt erzeugt. Automatischer Aufruf von toString z.B. durch: println append Operator ‚+‘ Definition von toString für eigene Klassen sinnvoll. public class Person { String name; int alter; . . . public String toString() return “Person: “ + name + “, “ + alter; }


Herunterladen ppt "Indirekte Adressierung"

Ähnliche Präsentationen


Google-Anzeigen