Folienpaket 5 Themenschwerpunkte: Referenztypen: Felder 208 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Wiederholung Schleifentypen In Java gibt es hauptsächlich drei Schleifentypen: while/do/for. Typische Übersetzungen aus mathematischen Formeln: Die Summe wird berechnet über y = b f (k) k=a double y = 0.0; for (int k = a; k <= b; k = k + 1) { y = y + f(k); } System.out.println(y); // Nicht in der Schleife 209 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Wiederholung Schleifentypen In Java gibt es drei Schleifentypen: while/do/for. Typische Suche über die natürlichen Zahlen: int n = 0; boolean gefunden; do { n = n + 1; gefunden = (Prüfung von n ); } while (gefunden == false); System.out.println("Gefunden wurde n = " + n); Bei Suchschleifen: Wiederholung solange Zielprüfung falsch ist. 210 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Wiederholung Schleifentypen In Java gibt es drei Schleifentypen: while/do/for. Typische kontrollierte Benutzereingabe zur Berechnung von y = x: double x; do { System.out.print("Geben Sie eine nichtnegative Zahl ein: "); x = eingabe.nextdouble(); } while (x < 0); double y = Math.sqrt(x); Aber Hauptanwendung von Schleifen ist Bearbeitung von Feldvariablen. 211 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Zusammengesetzte Datentypen Neben den elementaren gibt es auch zusammengesetzte Datentypen. Java kennt Felder und Klassen, sie werden aus elementaren Datentypen zusammengesetzt. Zusätzliche Symbole sind notwendig, um auf solche Variablen zuzugreifen: Bei Feldern: Eckige Klammern [ bzw. ] Bei Klassen und Objekten: Der Punkt. Zusammengesetzte Datentypen werden aus elementaren Datentypen aufgebaut: wir müssen Java irgendwie mitteilen, aus welchen und wieviele. 212 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Zusammengesetzte Datentypen Zusammengesetzte Datentypen benötigen Speicherbereiche, diese müssen verwaltet werden. Dazu gibt es Referenzvariablen. Felder und Objekte können nur über Referenzen benutzt werden. Dazu sind mehrere Schritte notwendig: Eine Referenzvariable wird deklariert, das eigentliche Feld bzw. das Objekt wird im Speicher erzeugt, über die Referenzvariable wird auf die Inhalte zugegriffen. 213 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Feldvariablen Der einfachste zusammengesetzte Datentyp ist das Feld (engl. array): Ein Feld ist eine Kette von Variablen gleichen Typs: a[0] a[1] a[2] a[3] a[4] a[n-1] Deklaration der Referenzvariablen: Datentyp [] Name ; Beispiel: boolean[] meinfeld; Erstellen: Name = new Datentyp [Anzahl ]; Beispiel: meinfeld = new boolean[10000]; Die Variable im Feldelement j bekommt man mit Name [j] Beispiel: meinfeld[300] = false; Feldelemente werden in Java von 0 bis n 1 gezählt, die Zahl in den eckigen Klammern ist der Index in das Feld. 214 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen in Java Was genau wird im Speicher angelegt? double[] z; z = new double[5]; z[0] = 1; z[1] = -3.1; z[2] = 4; z[3] = 5.0/2.0; z[4] = z[2]; Wir haben hier zwei verschiedene Typen von Variablen: Die einzelnen Feldelemente z[0], z[1],..., z[4] enthalten elementare double-zahlenwerte. Die Variable z ohne Klammern enthält dagegen eine Referenz als Wert. Ihr einziger Zweck ist es, das Feld im Speicher zu verwalten. Die Referenz enthält die Position des Felds im Speicher, seine Länge, den Elementtyp und noch weitere Informationen. 215 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen in Java Wir müssen genau unterscheiden zwischen Elementare Datentypen wie int, double,... Hier ist die Variable mit Ihrer Speicherzelle identisch. Zusammengesetzte Datentypen wie int[], double[],... Hier unterscheidet man zwischen der Referenzvariable und den Speicherzellen, auf die sie zeigt. Beachte: String ist kein elementarer Datentyp, aber auch kein Feld. Es ist ein Klassentyp ( = ein Datentyp mit Programmcode). Dazu kommen wir erst später. 216 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen in Java Nach der Deklaration ist eine (lokale) Referenzvariable nicht initialisiert (es sei denn, sie wird mit dem Wert null initialisiert, das Literal mit der Bedeutung zeigt nirgends hin ). Durch den new-befehl wird ein neuer Speicherbereich angelegt (man sagt auch: reserviert), dann wird die Referenz auf diesen Bereich gesetzt. Dem new-befehl muss man mitteilen, welche Feldelemente und wieviele gebraucht werden. 217 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen in Java Ein typisches Beispiel: Erzeuge 100 Zufallszahlen double[] zahlen; zahlen = new double[100]; for (int j = 0; j < 100; j = j + 1) { zahlen[j] = Math.random(); } Zugriff auf die erzeugten Zahlen erfolgt über die Referenz. Den Ausdruck zahlen[j] interpriert Java so: Gehe in den Speicherbereich auf den zahlen zeigt, und hole dort das j-te Element. 218 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Intelligente Referenzen In Java kontrollieren Referenzen den Zugriffe auf ihr Feld: Der Index wird geprüft: double[] z = new double[10]; z[30] = 4; FEHLER: Letztes Element im Feld hat Index 9 z[-5] = 0; FEHLER: Felder starten beim Index 0 Der Feldtyp wird geprüft: int[] m = new int[10]; m[3] = 4.3; FEHLER: Falscher Feldtyp byte k = m[1]; FEHLER: Bitverlust Ist überhaupt ein Feld da? byte[] b; // Nur Referenz erzeugt b[3] = 1; FEHLER: b ist "null", kein Feld gefunden Mit dem Schlüsselwort length kann man die Länge des Felds ermitteln, z.b. hat z.length den Wert 10 im ersten Beispiel. 219 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Sofortige Initialisierung Wie elementare Variablen können Felder sofort mit Werten belegt werden: Dabei ersetzt man new Datentyp [Anzahl ] durch die Auflistung { wert1, wert2,... }. Beispiel: int[] A = { 32, 5, -2, 12, 4 }; Bei einer sofortigen Initialisierung braucht man die Anzahl nicht anzugeben, Java zählt die Elemente schon selbst. Nachteil: Man muss die Elementwerte vorher schon kennen. Auch unschön: In der Mathematik ist {1, 2} = {2, 1}, in Java nicht! 220 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Sofortige Initialisierung Alle elementaren Werte können so initialisiert werden: String[] S = { "Mein", "kleines", "Programm"}; int[] A = { 4, 7, 4, 1, 2}; int[] I = { 1, 4, 3, A[3]+1, 3}; char[] C = { 'a', 'ö', '2', 'Σ' }; Deklaration und Initialisierung müssen gleichzeitig erfolgen: int[] A; A = { 4, 7, 4, 1, 2 }; Syntaxfehler Bei sofortiger Initialisierung muss Feldlänge/Inhalt zum Zeitpunkt der Programmerstellung bekannt sein, das ist in der Regel nicht der Fall. 221 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Beispiel Die Feldlänge kann man mit Hilfe einer Variablen festlegen, dadurch werden Programme flexibel: System.out.println("Wieviele sollen es sein?"); int anzahl = eingabe.nextint(); double[] zahlen = new double[anzahl]; for (int j = 0; j < anzahl; j = j + 1) { zahlen[j] = Math.random(); } Besser: In der for-bedingung mit length abfragen, wieviele Elemente tatsächlich im Feld sind. 222 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe Schreiben Sie ein Programmstück, das prüft, ob die Werte in feld sortiert sind. Dazu muss jedes Feldelement kleiner oder gleich seinem Nachfolger sein: boolean sortiert = true; double[] feld = new. if (sortiert) System.out.println("Feld ist sortiert"); Tipp: Prüfen Sie, ob feld[j] kleinergleich feld[j + 1] ist. 223 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe Schreiben Sie ein Programmstück, das prüft, ob die Werte in feld sortiert sind. Dazu muss jedes Feldelement kleiner oder gleich seinem Nachfolger sein: boolean sortiert = true; double feld[] = new for (int j = 0; j < (feld.length - 1); j = j + 1) { if (feld[j] > feld[j + 1]) sortiert = false; } if (sortiert) System.out.println("Feld ist sortiert"); 224 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen in Java Der Unterschied Referenz/Wert ist kompliziert, hier eine Tauschaktion mit elementaren Variablen: // Zwei elementare Variablen deklarieren int a; int b; // Erste Variable beschreiben a = 1; // b auf a setzen und b modifizieren b = a; b = 1000; System.out.println(a); 1 Die Variablen a und b haben verschiedene Speicherzellen. 225 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen in Java Das gleiche Spiel mit Referenzen: // Zwei Referenzen deklarieren int[] A; int[] B; // Erstes Feld anlegen, A ist Referenzvariable A = new int[4]; A[0] = 1; A[1] = 1; A[2] = 1; A[3] = 1; B = A; B[0] = 1000; System.out.println(A[0]); 1000 A und B sind verschiedene Referenzvariablen, aber beide Referenzen zeigen auf den gleichen Speicherbereich. 226 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe Angenommen feld ist ein Feld aus int-elementen. Erzeugen Sie eine Kopie dieses Felds. 227 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe Angenommen feld ist ein Feld aus int-elementen. Erzeugen Sie eine Kopie dieses Felds. int[] kopie; kopie = new int[feld.length]; for (int j = 0; j < feld.length; j = j + 1) { kopie[j] = feld[j]; } Bekommen Sie auch mit feld.clone() aus der Referenz. Die Zuweisung kopie = feld; erzeugt schon eine Kopie, aber nicht vom Feld sondern nur von der Referenz auf das gleiche Feld. 227 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Felder verwalten Felder sind dynamisch, man kann die Referenzvariable jederzeit mit einem neuen Feld beschreiben, auch mit einer anderen Länge. Nur der elementare Datentyp muss gleich sein. int[] A = new int[200]; System.out.println(A.length); 200 A = new int[10]; System.out.println(A.length); 10 A = new double[10]; FEHLER: Falscher Typ Styleguide: Niemals Feldlängen als Zahlen in for-bedingungen schreiben, sondern length und das <-Zeichen benutzen: for (int j = 0; j < feld.length; j = j + 1) { Block } 228 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen und Zeiger Referenzen sind eine Eigenheit von Java: In klassischen Sprachen werden Felder durch Zeiger realisiert, ein Zeiger ist ein int, der einfach die Nummer der Speicherzelle angibt wo das Feld anfängt. Das Zeigerkonzept hat Vor- und Nachteile: Kein Verwaltungsaufwand, Abarbeiten der Feldelemente effizient machbar, aber kein Indexcheck möglich: Felder kennen ihre Länge nicht. Und keine Kontrolle, dass der Zeiger wirklich auf ein Feld zeigt. Die Sprache C ist gefürchtet (und bei Hackern geschätzt) für ungeprüfte Zeigerzugriffe, mit denen ein Programm theoretisch den gesamten Speicher und damit den Computer kontrollieren kann. Moores Gesetz: Felder mit int-zeigern sind keine gute Idee... 229 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen und Zeiger In den 70ern: int s waren nur 16 Bit breit, wurde zum Problem als erste Computer mit Speicher >64Kb entwickelt wurden. Prozessorhersteller haben Problem bis in die 90er hinein überbrückt, indem der Speicher in getrennte Segmente eingeteilt wurde. MS-DOS konnte mit diesem Trick bis in die 90er hinein nur 640Kb Speicher verwalten, aufwendige Programme haben meist gleich beim Starten das Betriebssystem ausgehebelt und eine eigene Speicherkontrolle eingerichtet. 90er: MS-Betriebssysteme setzen erstmals systematisch 32Bit-ints ein. Moores Gesetz sagt voraus, dass damit 16 Verdopplungen, also 16 18 = 288 Monate, sprich 24 Jahre Zeit erkauft wurden bis das Problem wieder auftritt. Heute: Umstellung auf 64Bit-Systeme, hält nach Moore bis 2062. Eine Referenz in Java ist grundsätzlich keine Zahl mehr, sondern ein ganzes Bündel an Informationen über das Feld. 230 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen Die JVM (Java Virtual Machine) regelt im Hintergrund die Speicherverwaltung: Speicherbereiche werden permanent bewegt und optimiert, JVM betreibt Garbage Collection, wenn ein Speicherblock keine Referenz mehr hat wird er gelöscht: byte[] b = new byte[3]; b[2] = 1; b = new byte[5]; b[4] = 2; b = null; Verhindert die für Zeiger-Systeme typische Speicherfragmentierung, und verhindert die für C typischen Speicherlecks/Hacks. Optimal wenn viele kleine und sich oft ändernde Felder im Spiel sind. Java ist zur Verarbeitung großer statischer Datenmengen ungeeignet. 231 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Referenzen in Java Was genau kann mit einer Referenz versehen werden? So ziemlich alles in Java! einzelne Variablen (Felder der Länge 1) Felder aus Variablen Felder aus Feldern Felder aus Feldern aus... allgemeine Objekte (Variablen+Programmcode, dazu später mehr) Beim Umgang mit Referenzen gilt stets: Unterschied Referenz und Speicherbereich beachten Die Feldelemente sind erst nach dem new-befehl vorhanden Vorher enthält die Referenzvariable den Wert null Zugriffe mit einer null-referenz geben eine Fehlermeldung 232 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; V[0] = 2; V[1] = 2; V[2] = 2; V[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 233 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 234 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 235 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 236 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 237 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 238 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 239 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 240 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 241 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 242 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 243 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 244 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 245 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 246 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 247 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 248 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 249 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 250 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4
Aufgabe:Lösung Arbeiten Sie folgendes Programmstück ab. Zeichnen Sie schematisch den Speicher, sowie die Referenzen mit Pfeilen. Passen Sie in jedem Schritt den Speicher und die Pfeile an: int n = 4; byte[] V; V[0] = 1; V[1] = 1; V[2] = 1; V[3] = 1; byte[] X = V; X[0] = 2; X[1] = 2; X[2] = 2; X[3] = 2; V[0] = 3; V[1] = 3; V[2] = 3; V[3] = 3; 251 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4