Arrays Flashcards

1
Q

Arrays

A

° Sammlung gleichartiger Elemente
° Zugriff erfolgt über einen Index
° Listen mit fester Größe
° Abstrahieren von einem zusammenhägenden Speicherbereich mit indiziertem Zugriff auf die Speicherzellen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Arrays für Bilddaten

A

° Bilder sind zweidimensionale Strukturen einzelner Bildpunkte
° Bildgröße (Zeilen und Spalten) ist statisch
° Informationen über Bildpunkte müssen für Bildverarbeitung schnell zugreifbar sein

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Arrays in Java

A

° geordnete Reihung gleichartiger Elemente
° Elementtypen können Basistypen oder Referenztypen sein (auch Referenzen auf andere Arrays)
° Die Länge eines Array wird erst beim Erzeugen festgelegt
° Jeder Zugrigg über den Index wird automatisch geprüft

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Arrays Objekte

A

° Array in Java immer eine Objekt (Arrays haben alle Eigenschaften, die in der Klasse Object definiert sind)
° Array-Variable ist immer eine Referenzvariable ( Typ ist Array von Elementtyp)
° Deklaration eines Array von integer-Werten:
int[] intArray;
-> Länge/Größe des Arrays wird in Deklaration nicht angegeben

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Array Deklaration

A

° Type [] Identifier
° // Array-Variable mit primitivem Elementtyp (Array von int)
int[] numbers;
° // Array-Variable mit einem Objekttyp als Elementtyp (Array von Person)
Person[] people;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Array Erzeugung

A

° Array-Objekte müssen explizit erzeugt werden ( wie alle Objekte mit new)
new Type [ LengthExpression]
° Länge wird definiert oder berechnet und bleibt unverändert
intArray = new int [8];
° Deklaration und Erzeugung können zusammengefasst werden:
int[] intArray = new int [8];

° // Erzeugung eines Arrays mit primitivem Elementtyp
new int[10]
° // Erzeugung eines Arrays mit einem Objekttyp als Elementtyp
new Person[x]

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Initialisieren von Array-Zellen

A

° Bei Array- Erzeugungen erhalten die Zellen eines Arrays in Java die Default-Werte des Elementtyps
° Neben der normalen Zuweisung von Werten kann ein Array auch implizit erzeugt und direkt initialisiert werden
° implizite Erzeugung und Initialisierung mit geschweiften Klammern ist ausschließlich bei der Deklaration erlaubt!

int[] intArray = {1,2,3,4,5,6,7,8};

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Indizierung bei Arrays

A

° beginnend bei 0
° Gültiges Indiz: ganzzahlig von 0 bis length -1
° Beispiel: Array mit Größe 8 hat gültiges Indiz von 0…7

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Schreibender und lesender Zugriff auf Array-Zellen

A

° Auf die Array-Zellen wird mit eckigen Klammern [] zugegriffen:

float element = temperatures [0]; // lesender Zugriff
temperatures[3] = 21.2f;
//schreibender Zugriff
temperatures[0] = temperatures [1]; //lesender Zugriff

° Array-Zellen speichern Werte oder Referenzen auf Objekte genau wie andere Variablen auch

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Typische Fehler

A

° Array der Größe

  • System.out.println(temperatures[8]);
  • > Fehlermeldung: ArrayIndexOutOfBoundsException: 8

° Array als Exemplarvariable deklariert: private int[] _numbers;
° Im Konstruktor als erstes: _numbers[0] = 42;
-> Fehlermeldung: NullPointerException
-> Erzeugung des Arrays fehlt: _numbers = new int [8];

° Array mit Objekttyp als Elementtyp deklariert und initialisiert:
- Konto[] konten = new Konto [4];
° direkt danach:
- konten[0].einzahlen(123);
-> Fehlermeldung: NullPointerException
° Erzeugung der Elemente des Arrays fehlt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

For-Schleifen und Arrays

A

° Einsetzung von For-Schleifen, um alle Elemente eines Arrays zu bearbeiten
° die öffentliche Exemplarkonstante length wird dabei benutzt
° Standardbenutzung einer For-Schleife für Arrays wird als Programmiermuster bezeichnet

public void printArray(int[] intArray)
{
   for (int i = 0; i < intArray.length; ++i)
   {
      System.out.println(intArray[i]);
   }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Erweiterte For-Schleife für Arrays

A

° erspart den Zugriff auf length
° ist nicht geeignet, wenn an der Belegung der Zellen etwas geändert werden soll. Im Schleifenrumpf steht kein Schleifenindex zur Verfügung.

public void printArray(int[] intArray)
{
   for (int k: intArray)
   {
      System.out.println(k);
   }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Zuweisungen mit Arrays

A

° Zuweisung einer Array-Variable kopiert nur eine Referenz!
int[] intArray1 = {1, 2, 3};
int[] intArray2 = intArray1;
° Beide Referenzen verweisen nun auf dasselbe Array-Objekt
° Für eine Kopie des Array-Objektes gibt es zwei Möglichkeiten:
- Elementenweise in ein neues Array-Objekt kopieren
- Methode clone verwenden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Kopieren von Array-Objekten

A

° Neues Array-Objekt selbst erzeugen und elementweise kopieren:
int[] intArray1 = {1, 2, 3};
int[] intArray2 = new int [intArray1.length];
for (int i = 0; i< intArray1.length; ++i)
{
intArray2[i] = intArray1[i];
}

° mit der Methode clone:
int[] intArray1 = {1, 2, 3};
int[] intArray2 = intArray1.clone();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Zweidimensionale Arrays

A

° Zweidimensionale Arrays in Java sind Arrays von eindimensionale Arrays
° a [3][1]
- a eine Referenz auf ein Array von Zeilen
- Der erste Index benennt die Zeile, der zweite de Spalte

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Zweidimensionale Arrays erzeugen

A

° Mit new ist es möglich zweidimensionale Arrays direkt zu erzeugen. new int [5][4]

int[] [] a;
a = new int[5] [];
for ( int i = 0; i < 5; ++i)
{
   a[i] = new int[4];
}
17
Q

Zugriff auf zweidimensionale Arrays

A
// Alle Array-Element auf den Wert 7 setzen
for (int row=0; row < a.length; ++row)
{
   for (int column=; column < a[row].length; ++column)
   {
      a[row][column] = 7;
   }
}
18
Q

Kopieren von mehrdimensionalen Arrays

A

° Manuell kopieren
° mit der Methode clone
- ist für Arrays nicht rekursiv implementiert
- d.h., bei einem Aufruf von clone auf einer Array-Variablen für ein mehrdimensionales Array wird nur das Array auf der obersten Ebene kopiert
-> Wenn vollständige Kopie gewünscht, muss man manuell für alle Dimensionen geklont werden

19
Q

Vorteile von Arrayas

A

° Effizienzvorteile durch speichernahe Implementation:
- Elementzugriff kann direkt auf einen Index-Zugriff abgebildet werden; sehr effizient
- Effiziente Kopiervorgänge von Arrays
° Arrays in Java haben gegenüber den dynmaischen Sammlungen den Vorteil, dass sie auch elementare Typen als Elementtyp zulassen

20
Q

Nachteile von Arrays

A

° Array hat nach der Erzeugung eine fest Maximalkapazität
° Auf einem Array gibt es außer dem indizierten Zugriff keine höherwertigen Operationen (z.B. einfügen, entfernen, anfügen, testen auf Enthaltensein)