5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a;...

40
5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: æ Lege sie konsekutiv ab! æ Greife auf einzelne Werte über ihren Index zu! 17 3 -2 9 0 1 0 1 2 3 4 5 Feld: Index: 30. Jan. 2018 Felix Brandt, Harald Räcke 116/596

Transcript of 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a;...

Page 1: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

5.4 Arrays

Oft müssen viele Werte gleichen Typs gespeichert werden.

Idee:

ñ Lege sie konsekutiv ab!

ñ Greife auf einzelne Werte über ihren Index zu!

17 3 -2 9 0 1

0 1 2 3 4 5

Feld:

Index:

30. Jan. 2018

Felix Brandt, Harald Räcke 116/596

Page 2: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel

1 int[] a; // Deklaration2 int n = read();3

4 a = new int[n]; // Anlegen des Felds5 int i = 0;6 while (i < n) {7 a[i] = read();8 i = i + 1;9 }

Einlesen eines Feldes

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 117/596

Page 3: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel

ñ type[] name; deklariert eine Variable für ein Feld (array),

dessen Elemente vom Typ type sind.

ñ Alternative Schreibweise:

type name[];

ñ Das Kommando new legt ein Feld einer gegebenen Größe an

und liefert einen Verweis darauf zurück:

a

a 0 0 0 0 0 0

a = new int[6];

Man kann auch leere Felder anle-gen: new int[0].

Alles was mit new angelegt wird,ist vorinitialisiert. Referenztypenzu null, Zahltypen zu 0, boo-lean zu false.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 118/596

Page 4: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Was ist eine Referenz?

Eine Referenzvariable speichert

eine Adresse; an dieser Adresse

liegt der eigentliche Inhalt der

Variablen.

a 4 3 0 9

Wir können die Referenz nicht

direkt manipulieren (nur über den

new-Operator, oder indem wir

eine andere Referenz zuweisen).

...

00000130

0000012F

0000012E

0000012D

0000012C

0000012B

0000012A

00000129

00000128

00000127

...

a:

...

00000009

00000000

00000003

00000004

0000012C

...

Adresse Inhalt

Eine Referenz zeigt daduch nie auf einen beliebigenOrt im Speicher; sie zeigt immer auf ein gültiges Ob-jekt oder auf das null-Objekt.Wir geben üblicherweise nie den Wert einer Referenz-variablen an, sondern symbolisieren diesen Wert durcheinen Pfeil auf die entsprechenden Daten.

Page 5: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

5.4 Arrays

ñ Der Wert einer Feld-Variable ist also ein Verweis!!!

ñ int[] b = a; kopiert den Verweis der Variablen a in die

Variable b:

a

a

b

int[] b = a;

ñ Alle nichtprimitive Datentypen sind Referenzentypen,

d.h., die zugehörige Variable speichert einen Verweis!!!

Insbesondere beim Kopierenvon Feldern (und anderen Re-ferenztypen) muss man sichdessen immer bewusst sein.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 120/596

Page 6: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

5.4 Arrays

ñ Die Elemente eines Feldes sind von 0 an durchnummeriert.

ñ Die Anzahl der Elemente des Feldes name ist name.length.

ñ Auf das i-te Element greift man mit name[i] zu.

ñ Bei jedem Zugriff wird überprüft, ob der Index erlaubt ist,

d.h. im Intervall {0, . . . ,name.length-1} liegt.

ñ Liegt der Index außerhalb des Intervalls, wird eine

ArrayIndexOutOfBoundException ausgelöst ( Exceptions).

Sie sollten beim Programmieren möglichst nie diese Exception be-kommen. In anderen Sprachen (z.B. C/C++) gibt es aus Effizienz-gründen keine Überprüfung. Wenn Sie in einer solchen Spracheeinen solchen Fehler verursachen, ist der sehr schwierig zu finden.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 121/596

Page 7: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Mehrdimensionale Felder

ñ Java unterstützt direkt nur eindimensionale Felder.

ñ ein zweidimensionales Feld ist ein Feld von Feldern. . .

a

a

a = new int[5][6];

Page 8: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Der new-Operator

symbol name types L/R levelnew new Typ, Konstruktor links 1

Erzeugt ein Objekt/Array und liefert eine Referenz darauf

zurück.

1. Version: Erzeugung eines Arrays (Typ ist Arraytyp)

ñ new int[3][7]; oder auch

ñ new int[3][]; (ein Array, das 3 Verweise auf int enthält)

ñ new String[10];

ñ new int[]{1,2,3}; (ein Array mit den ints 1, 2, 3)

2. Version: Erzeugung eines Objekts durch Aufruf eines

Konstruktors

ñ String s = new String("Hello World!");

So etwas wie new int[3][][4] macht keinen Sinn, da die Größedieses Typs nicht vom Compiler bestimmt werden kann.

Was genau ein Konstruktor ist kommt später.

Page 9: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Der Index-Operator

symbol name types L/R level

[] index array, int links 1

Zugriff auf ein Arrayelement.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 124/596

Page 10: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

x = a [ 3 ] [ 2 ]x = a [ 3 ] [ 2 ]

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 11: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

x = a [ 3 ] [ 2 ]x = a [ 3 ] [ 2 ]

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 12: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

x = a [ 3 ] [ 2 ]x = a [ 3 ] [ 2 ]

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 13: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

x = [ ]

a 3

[ 2 ]x = [ ]

a 3

[ 2 ]

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 14: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

x = [ ]

a 3

[ 2 ]x = [ ]

a 3

[ 2 ]

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 15: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

x = [ ]

[ ]

a 3

2

x = [ ]

[ ]

a 3

2

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 16: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

x = [ ]

[ ]

a 3

2

x = [ ]

[ ]

a 3

2

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 17: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

=

x [ ]

[ ]

a 3

2

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 18: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 19: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 20: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 21: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 22: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 23: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 24: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 25: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 26: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

◦, int[]var

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 27: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

◦, int[]var

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 28: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

◦, int[]var

2, intval

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 29: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

◦, int[]var

2, intval

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 30: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

◦, int[]var

2, intval

6, intvar

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 31: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

◦, int[]var

2, intval

6, intvar

=

x [ ]

[ ]

a 3

2

2x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 32: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: x = a[3][2]

=

x [ ]

[ ]

a 3

2

2, intvar

◦, int[][]var

3, intval

◦, int[]var

2, intval

6, intvar

6, intval

=

x [ ]

[ ]

a 3

2

6x a 1 2 3 4 5 6

0 9 8 3 4 4

9 7 4 6 0 6

2 5 6 4 2 3

5 0 1 2 8 3

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 125/596

Page 33: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Der . -Operator

symbol name types L/R level

. member access Array/Objekt/Class, Member links 1

Zugriff auf Member.

Beispiel:

ñ x = new int[2][4].length

x hat dann den Wert 2.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 126/596

Page 34: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: new int[2][4].length

Das Parsing für den new-Operator passt nicht in das Schema:

new int [ 2 ] [ 4 ] . lengthnew int [ 2 ] [ 4 ] . length

Beachte den Unterschied zwischen new int[2][3] und(new int[2])[3]. Bei letzterem ist das zweite Klam-merpaar ein Index-Operator während es beim erstenAusdruck zum Typ gehört.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 127/596

Page 35: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: new int[2][4].length

Das Parsing für den new-Operator passt nicht in das Schema:

new int [ 2 ] [ 4 ] . lengthnew int [ 2 ] [ 4 ] . length

Beachte den Unterschied zwischen new int[2][3] und(new int[2])[3]. Bei letzterem ist das zweite Klam-merpaar ein Index-Operator während es beim erstenAusdruck zum Typ gehört.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 127/596

Page 36: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: new int[2][4].length

Das Parsing für den new-Operator passt nicht in das Schema:

new int [ 2 ] [ 4 ] . lengthnew int [ 2 ] [ 4 ] . length

Beachte den Unterschied zwischen new int[2][3] und(new int[2])[3]. Bei letzterem ist das zweite Klam-merpaar ein Index-Operator während es beim erstenAusdruck zum Typ gehört.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 127/596

Page 37: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: new int[2][4].length

Das Parsing für den new-Operator passt nicht in das Schema:

new

int [ 2 ] [ 4 ]

. lengthnew

int [ 2 ] [ 4 ]

. length

int[2][4]

Beachte den Unterschied zwischen new int[2][3] und(new int[2])[3]. Bei letzterem ist das zweite Klam-merpaar ein Index-Operator während es beim erstenAusdruck zum Typ gehört.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 127/596

Page 38: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: new int[2][4].length

Das Parsing für den new-Operator passt nicht in das Schema:

new

int [ 2 ] [ 4 ]

. lengthnew

int [ 2 ] [ 4 ]

. length

int[2][4]

Beachte den Unterschied zwischen new int[2][3] und(new int[2])[3]. Bei letzterem ist das zweite Klam-merpaar ein Index-Operator während es beim erstenAusdruck zum Typ gehört.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 127/596

Page 39: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Beispiel: new int[2][4].length

Das Parsing für den new-Operator passt nicht in das Schema:

.

new

int [ 2 ] [ 4 ]

length

.

new

int [ 2 ] [ 4 ]

length

int[2][4]

Beachte den Unterschied zwischen new int[2][3] und(new int[2])[3]. Bei letzterem ist das zweite Klam-merpaar ein Index-Operator während es beim erstenAusdruck zum Typ gehört.

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 127/596

Page 40: 5.4 Arrays -  · 5.4 Arrays æ Der Wert einer Feld-Variable ist also ein Verweis!!! æ int[] b = a; kopiert den Verweis der Variablen a in die Variable b: a a b int[] b = a; æ Alle

Arrayinitialisierung

1. int[] a = new int[3];

a[0] = 1; a[1] = 2; a[2] = 3;

2. int[] a = new int[]{ 1, 2, 3};

3. int[] a = new int[3]{ 1, 2, 3};

4. int[] a = { 1, 2, 3};

5. char[][] b = { {’a’,’b’}, new char[3], {} };

6. char[][] b;

b = new char[][]{ {’a’,’b’}, new char[3], {} };

7. char[][] b;

b = { {’a’,’b’}, new char[3], {} };

5.4 Arrays 30. Jan. 2018

Felix Brandt, Harald Räcke 128/596