homedukeOOP mit Java: Felder Prof. Dr. Uwe Schmidt FH Wedel

Felder

weiter

weiter

Gemeinsamkeiten: Felder <==> Objekte

merke
dynamische Allokation
weiter
merke
automatische Speicherbereinigung
weiter
merke
Feldvariablen enthalten einen Verweis auf ein Objekt
weiter
merke
Felder besitzen alle Methoden aus Object
weiter

weiter

Unterschiede: Felder <==> Objekte

merke
Erzeugung durch besondere Syntax bei new
weiter
merke
keine Unterklassen von Arrays möglich
weiter
merke
keine Erweiterung oder Redefinition von vordefinierten Methoden
weiter

weiter

Deklaration, Initialisierung und Zugriff

Deklaration
eindimensionales Feld
 
int[] feld;
 
mehrdimensionales Feld, Feld von Feldern
 
int[][] matrix;
weiter
Initialisierung
int[] fib = {
  0, 1, 1, 2, 3, 5, 8, 13
};
weiter
String [] zahlen = {
   "eins",
   "zwei",
   "drei"
};
weiter
Object[] a = {
  new Integer(42),
  new Double(3.141),
  new String("xyz")
};
weiter
int[][] matix = {
   {0, 0},
   {0, 1},
   {1, 0},
   {1, 1}
};
weiter
int[][] dreiecksMatrix = {
  {1, 2, 3, 4},
  {1, 2, 3},
  {1, 2},
  {1}
}
weiter
Erzeugung mit new
int[] feld;
  ...
  feld = new int[7];
weiter
int[][] matrix;
  ...
  matrix = new int[3][3];
weiter
int[][] matrix2;
  ...
  matrix2 = new int[5][];
weiter
Erzeugung mit Initialisierung
in Ausdrücken
ab Java 1.1
 
int[] ia;
  ...
  ia = new int[] { 13, 14, 27 };
 
  ... ia.length ==  3    // --> true
  ... ia[1]     == 14    // --> true
weiter
Indizierung
immer ab 0, (wie in C)
weiter
Zugriff
int[] a = new int[5];
 
  ...a[i]...
weiter
Indexüberprüfung
immer
bei jedem Feldzugriff
weiter
Ausnahme
weiter
Feldlänge
Teil des Objekts
wird bei der Erzeugung festgelegt
Zugriff über length Attribut
 
int[] list = {3, 4, 5};
 
  ... list.length ...  // --> 3
weiter
Kopieren
int[] a = {1, 2, 3, 4, 5};
int[] b;
 
         // nur der Verweis wird kopiert
b = a;
weiter
         // Werte in neues Feld kopieren
         // mit Schleife
b = new int[a.length];
for ( int i = 0;
      i < a.length;
      ++i ) {
  b[i] = a[i];
}
weiter
         // System-Funktion
System.arraycopy(a, 0, b, 0, a.length);
 
siehe auch Klasse System im Paket java.lang

Letzte Änderung: 14.02.2012
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel