[SOLVED] CS Java Programmierung

$25

File Name: CS_Java_Programmierung.zip
File Size: 207.24 KB

5/5 - (1 vote)

Programmierung
Arrays
Michael Goedicke (Basis Volker Gruhn und Mathias Book)
paluno

Arrays
Auch Felder oder Reihung genannt
Sammlung von Werten des gleichen Typs, wobei auf jeden Wert
uber einen Index zugegriffen werden kann
012345
012345
012345
Anmerkung: Uns begegnen spater noch Listen und Collections, mit denen sich manches eleganter losen lasst als mit Arrays
1
2
6
24
120
720
may
the
force
be
with
you
may
the
force
24
120
720
Programmierung VE04 2
paluno

Arrays Instanziierung
Deklaration
Typ[] arrayname;
Typ kann primitiver Datentyp oder Klasse sein int[] factorialNumbers;
String[] words;
Instanziierung
arrayname = new Typ[Groe];
factorialNumbers = new int[6]; words = new String[6];
0 1 2 3 4 5 6
n-1

Programmierung VE04
3
factorialNumbers: int[]
paluno

Array Zuweisung der Werte
Instanziierung mit Initialisierung
arrayname = {Wert0, Wert1, , Wertn};
String[] words = {may, the, force, be, with, you};
Zuweisung von Werten uber einen Index Index beginnt bei 0!
int[] factorialNumbers = new int[6]; factorialNumbers[0] = 1; factorialNumbers[1] = 2; factorialNumbers[2] = 6; factorialNumbers[3] = 24; factorialNumbers[4] = 120; factorialNumbers[5] = 720;
Programmierung VE04 4
paluno

Arrays Vergleich
Das Schlusselwort new beim Erzeugen eines Arrays deutet daraufhin, dass Arrays Objekte sind
Die Operatoren == und != haben ihre Objekt-Bedeutung: Sie vergleichen lediglich, ob zwei Variablen auf das gleiche Array-Objekt
verweisen, aber vergleichen auf keinen Fall die Inhalte der Arrays!
(Dafur gibt es Arrays.equals() in der Java-Klassenbibliothek)
Quelle: Ullenboom, C, Java ist auch eine Insel, Galileo OpenBook, http://openbook.galileodesign.de/javainsel5/
int[] factorialNumbers = new int[6]; int[] numbersFactorial = new int[6]; // Arrays mit gleichen Werten fullen factorialNumbers[0] = 1; numbersFactorial[0] = 1;

if (factorialNumbers == numbersFactorial){
// irgendwas machen } else {
// was anderes machen
}
else-Zweig wird immer ausgefuhrt
Programmierung VE04 5
paluno

Arrays Zugriff
1
2
6
24
120
720
factorialNumbers words
012345
012345
may
the
force
be
with
you
Zugriff auf bestimmtes Element arrayname[Index]
int x = factorialNumbers[2]; // x hat jetzt den Wert 6 String y = words[2]; // y hat jetzt den Wert force
Die Nummerierung der Elemente beginnt immer bei 0 und ist immer positiv
Zugriffe mit ungultigem Index erzeugen einen Fehler zur Laufzeit!
Programmierung VE04 6
paluno

Array Lange
Bestimmung der Lange arrayname.length
Bei einem Array mit der Lange x ist der grote zulassige Index x-1
Die Lange eines Arrays ist final, d. h. sie kann nicht geandert werden
Arrays sind nicht dynamisch! Will man ein groeres Array haben so muss man ein neues Array erzeugen
int z = words.length; // z hat jetzt den Wert 6
1
2
6
24
120
720
012345
012345
may
the
force
be
with
you
Programmierung VE04 7
paluno

Mehrdimensionale Arrays
Deklaration
Zahl der Klammerpaare bestimmt Zahl der Dimensionen
2-dimensional: Typ[][] arrayname;
3-dimensional: Typ[][][] arrayname;
usw.
Instanziierung
arrayname = new Typ[Groe0][Groe1];
int[][] factorialNumbers2dim = new int[2][6];
Zugriff erfolgt uber beide(!) Indizes
int x = factorialNumbers2dim[0][2] // x hat den Wert 6
1
2
6
24
120
720
720
120
24
6
2
1
0 1
012345
Programmierung VE04 8
paluno

Mehrdimensionale Arrays
Java setzt mehrdimensionale Arrays als Array von Arrays um, d. h. eigentlich ist ein mehrdimensionales Array ein eindimensionales, welches weitere Arrays als Elemente besitzt
1
2
6
24
120
720
012345
720
120
24
6
2
1
012345
01
Als Konsequenz folgt, dass mehrdimensionale Arrays nicht zwingend rechteckig sein mussen
1
2
6
24
120
720
012345
720
120
24
6
0123
01
Programmierung VE04 9
paluno

Mehrdimensionale Arrays
Instanziierung nicht rechteckiger Arrays
Groe einer Dimension abhangig vom Index der Oberdimension arrayname = new Typ[Groe0][];
arrayname[Index0] = new Typ[GroeIndex0]; Instanziierung mit Initialisierung
arrayname = new Typ[][] { {Wert00, Wert01, , Wert0n}, {Wert10, Wert11, , Wert1m}
};
int[][] factorialNumbers2dim = new int[][] { {1,2,4,24,120,720},
{720,120,24,6}
};
Programmierung VE04 10
paluno

Mehrdimensionale Arrays: Zugriff und Lange
Referenz auf Gesamt-Array [n-dimensionales Array]
arrayname
Referenz auf Teil-Array an Position [Index0] des Gesamt-Array [ (n-1)-dimensionales Teil-Array ]
arrayname[Index0]
Referenz auf bestimmtes Feldelement arrayname[Index0][Index1]
Array-Lange der aueren Dimension arrayname.length
Array-Lange der nachsttieferen Dimension arrayname[Index0].length
Programmierung VE04 11
paluno

Arrays als Ruckgabewert
Methoden in Java haben immer genau einen Ruckgabewert.
Arrays bieten einen einfachen (und verfuhrerischen) Mechanismus,
um mehrere Werte zuruckzugeben
public int[] productAndSum( int a, int b ) { return new int[]{ a * b, a + b };
} Quelle: Ullenboom, C, Java ist auch eine Insel, Galileo OpenBook, http://openbook.galileodesign.de/javainsel5/
Verfuhrerisch: es konnen mehr als Wert zuruckgegeben werden. Das ist unschoner Stil, falls der Zweck der verschiedenen Werte unterschiedlich ist
Programmierung VE04 12
paluno

Arrays als Parameter
Als Parameter konnen Arrays verwendet werden, wenn man nicht genau wei, wieviele Werte verarbeitet werden
Beispiel: Berechnung des groten Wertes
public int max(int[] values){
// irgendwie das Maximum aller Werte berechnen return maximum;
}
Um die Methode so zu verwenden, muss vorher ein Array aufgebaut werden
int[] values = new int[] {1,6,3,5,2}; int maxVal = max(values);
Basiert auf: Ullenboom, C, Java ist auch eine Insel, Galileo OpenBook, http://openbook.galileodesign.de/javainsel5/
Programmierung VE04 13
paluno

Arrays Zusammenfassung
Arrays werden auch Felder oder Reihung genannt und stellen eine Sammlung von Werten des gleichen Typs dar
Auf jeden Wert im Array kann uber einen Index zugegriffen werden
Der hochste Index eines Arrays ist die Lange -1
Arrays konnen beliebig viele Dimensionen haben
Mehrdimensionale Arrays sind verschachtelte Arrays, d. h. eigentlich handelt es sich um gewohnliche Arrays deren Elemente lediglich weitere Arrays sind
Programmierung VE04 14
paluno

Erweiterte for-Schleife
Typischer Anwendungsfall: Fur jeden Datensatz eine Aktion ausfuhren
Array mit Datensatzen
Anweisungen fur jeden Datensatz ausfuhren
Programm fortsetzen
Programmierung VE04 15
paluno

Erweiterte for-Schleife
Angenommen, wir mochten jeden String aus unserem Array ausgeben, so ist das mit der normalen Zahlschleife moglich, aber umstandlich
Die Zahlschleife zwingt uns, zusatzliche und ggf. unnotige Informationen anzugeben
Zahler (auch Iterator genannt), der explizit initialisiert wird Eine Bedingung, bis wann gezahlt werden soll
Eine (manuelle!) Erhohung des Zahlers
Die zusatzlichen Informationen beeintrachtigen die Lesbarkeit und sind fehleranfallig was passiert, wenn im folgenden Beispiel der Wert von i in der Schleife manipuliert wird?
String[] words = {may, the, force, be, with, you}; for (int i = 0; i < words.length; i++) { System.out.println(words[i]); }012345 may the force be with you Programmierung VE04 16 paluno Erweiterte for-Schleife Einfacher ist die Verwendung der erweiterten for-Schleife (auch foreach-Loop genannt)String[] words = {“may”, “the”, “force”, “be”, “with”, “you”}; for (String word : words) { System.out.println(word); } Das gesamte Array wird durchlaufen und bei jedem Durchlauf das nachste Element zur Verfugung gestellt Ist das Array leer, wird gar nichts ausgefuhrt Intern arbeitet Java weiterhin mit der klassischen Zahlschleife, diesesVerhalten wird aber vor uns versteckt may the force be with you012345 Programmierung VE04 17 paluno

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[SOLVED] CS Java Programmierung
$25