~Java4Beginners~
~Java4Beginners~

Array

Ein Array, oder auch Datenfeld, ist eine Folge von Daten gleichen Typs, die mit einem fortlaufenden Index (beginnend bei 0) versehen werden. Ein Array hat Platz für eine vorab fest definierte Menge an Daten.

Deklaration und Initialisierung

Die Deklaration eines Arrays ist eigentlich fast identisch wie alle anderen Deklarationen.

    // Algemeiner Aufgaub
    // Daten- oder Objekttyp[] Bezeichner
    int[] zahlen;
    String[] namen;
    Auto[] fuhrpark;
Mit der Deklaration haben wir noch kein Array erschaffen, sondern lediglich eine Referenz auf ein mögliches Array geschaffen.

Um ein Array nun zu erzeugen, müssen wir ein Array-Objekt erzeugen. Wie sie sich erinnern, passierte dies mit dem Schlüsselwort new.

Des weitern müssen wir eine Aussage treffen, wieviele Daten das Array maximal fassen kann.

Ein Array ist nicht dynamisch. Wenn eine Arraygröße sich ändert, muss ein neues Array-Objekt erzeugt werden mit größerem Datenbereich.


    zahlen = new int[20];
    namen = new String[200];
    fuhrpark = new Auto[50];
Es ist natürlich auch möglich ein Array in einer Anweisung zu deklarieren und zu initialisieren.

    int[] zahlen = new int[20]
Mit dieser Anweisung haben wir eine Referenz auf ein Array vom Datentyp int erzeugt, welches wir gleich initialisiert haben, und einen Datenbereich von 20 Dateneinträgen festgelegt haben.

Eine andere Möglichkeit der Initialisierung und Deklarierung besteht darin, dass die Referenz auf das Array erzeugt wird und nun kein Objket erzeugt wird, sondern direkt die Werte dem Array zugewiesen werden. Die Zuweisung erfolgt in geschweiften Klammern. Als Trennzeichen für die verschiedenen Werte wird ein Komma verwenden.

    int[] zahlen = {1,2,3,4,5};
Es wurde mit obiger Anweisung ein Array vom Datentyp int erzeugt, welches insgesamt 5 Werte aufgenommen hat. Die einzelnen Werte eines Arrays können über den sogenannten Index angesprochen werden. Eine große Fehlerquelle hierbei besteht, wenn man sich nicht der Tatsache bewusst ist, dass der Index mit 0 beginnt. Die Arraylänge gibt die Anzahl der Elemente innerhalb des Arrays an.
Index 0 1 2 3 4
Inhalt 1 2 3 4 5

Arraywerte mit Index ansprechen

Wie bereits gesehen werden die Werte in "Zellen" abgelegt, welche einen Index haben. Um nun den Fokus auf eine dieser Zellen zu legen, muss die Referenz auf diesen Bereich gelegt werden. Die passiert nach folgender Syntax.

    //Beispiel: Bezeichner[index]
    int arrayzahl = zahlen[3];
Das Beispiel besagt, dass das Array zahlen[] angesprochen wird. In diesem Array wird der Index 3 angesprochen.

Wie zu sehen ist, ist der Index fortlaufend, beginnend bei 0 und somit erkennt das geschulte Auge, dass wir mit der Arbeit mit Arrays oft mit Schleifen zu tun haben werden. Da in einem Projekt oft mit Arrays gearbeit wird, ist es durchaus vorteilhaft, dass wir Methoden, die mit Arrays zu tun haben, als statische Methoden erstellen. Da diese statische Methoden auch außerhalb des aktuellen Projektes benötigt werden, werde ich diese Methoden in die Klasse Stat.java speichern. Wir erinnern uns, dass wir diese Klasse einfach in neue Projekte kopieren und somit unsere erstellten Lösungsalgorithmen in diesen neuen Objekten ebenfalls zur Verfügung haben.

Beispielprogramme

Herkömmliche Ausgabe über println.

Es ist nicht sonderlich sinnvoll, eine Ausgabe so zu verwirklichen. Von daher, werden wir für die Ausgabe eine statische Methode erstellen, welche als Parameter ein Array vom Datentyp int erwartet. Diese statische Methode erstelle ich in meiner Stat.java.

    /**
     * Konsolenausgabe der einzelnen Werte eines Arrays vom Datentyp int
     * @param array Array vom Datentyp int
     */
    static void intArrayAusgeben(int[] array)
    {
        for (int i = 0;i < array.length;i++)
        {
            System.out.println(array[i]);
        }
    }
Durch diese statische Methode erreiche ich, dass, egal von welchem Bereich meines Projektes ich zugreiffe, immer Zugriff auf diese Methode habe, ohne ein Objekt davon erzeugen zu müssen.

Wie zu sehen verwenden wir bei dem Array die Methode length. Diese Methode gibt die Anzahl der Indexe des Arrays zurück. Und hier besteht großes Fehlerpotential. In der Initialsierung der For-Schleife wurde i auf 0 gesetzt, da der Index des Arrays auch bei 0 beginnt. Als Wiederholungsbedingung gilt i < array.length. Verwenden Sie hier nicht <=, da Sie ansonsten eine Fehlermeldung erzeugen.

Diese Fehlermeldung besagt, dass von einem Array ein Index angesprochen wurde, der nicht existiert. Dies passierte in dem Beispiel, da die Wiederholungsbedingung nun mit <= array.length angegeben wurde.

Der maximalste Indexwert eines Arrays ist um eins niedriger als die Länge des Arrays.

Wir können auch einem Array-Index einen neuen Wert zuweisen. Hierfür setzen wir die Referenz auf den Index des Arrays, welcher geändert werden soll und weisen somit dem Index des Arrays einen neuen Wert zu.

import java.util.Scanner;

/**
 * Programm für den Umgang mit Arrays
 * @author Markus Badzura
 */
public class Arrays 
{
    static Scanner sc = new Scanner(System.in);
    
    public static void main(String[] args) 
    {
        int[] zahlen = {1,2,3,4,5};
        Stat.intArrayAusgeben(zahlen);
        System.out.println("Wert ändern");
        zahlen[2] = 20;
        Stat.intArrayAusgeben(zahlen);
    }
}
Als letztes Beispiel für den Umgang mit Arrays wollen wir eine Methode erzeugen, welche dafür sorgt, dass 2 Zahlen innerhalb des Arrays getauscht werden. Als Parameter werden die Indexe der zu tauschenden Zahlen übergeben. Wie in dem Beispiel dann zu sehen ist, kann der Rückgabewert einer Methode auch ein Array sein.

import java.util.Scanner;

/**
 * Programm für den Umgang mit Arrays
 * @author Markus Badzura
 */
public class Arrays 
{
    static Scanner sc = new Scanner(System.in);
    
    public static void main(String[] args) 
    {
        int[] zahlen = {1,2,3,4,5};
        Stat.intArrayAusgeben(zahlen);
        System.out.println("Wert ändern");
        zahlen[2] = 20;
        Stat.intArrayAusgeben(zahlen);
        System.out.println("Zahlentausch");
        zahlentausch(zahlen, 2, 4);
        Stat.intArrayAusgeben(zahlen);
    }
    
    /**
     * Methode für den Tausch 2er Zahlen in einem Int-Array
     * @param array Array vom Datentyp int
     * @param index1 Index1 von der 1ten Zahl, die vom Tausch betroffen ist.
     * @param index2 Index2 von der 2ten Zahl, die vom Tausch betroffen ist.
     * @return Rückgabe des Arrays mit getauschten Zahlen
     */ 
    public static int[] zahlentausch(int[] array, int index1, int index2)
    {
        int temp = array[index1];
        array[index1] = array[index2];
        array[index2] = temp;
        return array;
    }
}

2 Arrays miteinander vergleichen

Ab und an kann es sinnvoll sein, 2 Arrays auf Gleichheit zu überprüfen. Z. B. bei der Arbeit mit JPaswordField's werden die Passwörter in ein Char-Array ausgelesen. Bei Passwortwiederholung ist es sinnvoll zu überprüfen, ob beide Passwörter identisch sind.

Hierfür können wir aus der Klasse Array die Methode equals verwenden.

    char[] pwTemp0 = jpf_fal[0].getPassword();
    char[] pwTemp1 = jpf_fal[1].getPassword();
    boolean pwGleichheit = Arrays.equals(pwTemp0, pwTemp1);
nach oben Java4Beginners -- Seitenversion 1.01 -- Stand: 2017-06-26