Muss ich alle Arrays am Anfang des Programms festlegen?

Nein, das musst du nicht und das ist auch nicht immer ratsam.

Wird beispielsweise ein Array nur lokal in einer Methode benötigt, dann soll und muss man das Array nicht am Anfang des Programms als Instanzvariable deklarieren. In diesem Fall wird das Array innerhalb der Methode deklariert.

Möchte man eine Methode schreiben, die ein neues Array zurückgibt, so muss das Array innerhalb der Methode deklariert werden.

Beispiel: Die Methode add() berechnet die Summe von zwei Vektoren und gibt das Ergebnis in einem neuen Array zurück.

public static double[] add(double v1[], double v2[]) {
    if (v1.length != v2.length) {
        throw new IllegalArgumentException();
    }
    double result[] = new double[v1.length];
    for (int i = 0; i < v1.length; i++) {
        result[i] = v1[i] + v2[i];
    }
    return result;
}