Ein größenveränderbares Array ist natürlich kein eigentliches Array, sondern eine ArrayList.

Eine ArrayList kann verwendet werden, um auf einfache Weise eine in der Größe veränderbare Array-ähnliche Struktur zu erzeugen.

Zwischen einem Array und einer ArrayList besteht ein entscheidender Unterschied: In einem Array T[] existiert für jeden Elementtyp T ein Array-Typ T[]. ArrayList hingegen ist eine Bibliotheksklasse des Paketes java.util, die Elemente vom Typ Object speichert.

import java.util.ArrayList;

public class ArrayListClass {  
    public static void main(String[] args){
        ArrayList al = new ArrayList();
        Integer ig = new Integer(17);
        Character ca = new Character('w');
        al.add("Willi");
        al.add(ca);
        al.add(ig);
        for(int i=0;i<al.size();i++){
            System.out.println(al.get(i));
        }
    }
}

In einer ArrayList können nahezu beliebig viele Elemente gespeichert werden. Die Größe der ArrayList muss hierzu nicht festgelegt werden, kann jedoch bei der Instanzbildung als Parameter an den Konstruktor übergeben werden:

ArrayList al = new ArrayList(100);

Sie ist jedoch jederzeit erweiterbar. Die zu speichernden Elemente müssen vom Typ Object sein, können also - wie im Beispiel - auch unterschiedlichen Typen angehören. Dies ist bei einem Array nicht möglich. Das Einfügen erfolgt mit der Methode add().
Um ein Element an einer bestimmten Position eizufügen muss eine set()-Methode verwendet werden:

al.set(i, str);

Dies entspricht der Array-Syntax a[i] = str;
Das Auslesen einer ArrayList gestaltet sich etwas komplizierter, da Elemente von Typ Object zurück gegeben werden. Der Wert muss somit entsprechend gewandelt werden:

Integer i = (Integer)al.get(25);

Hier wird das Element an 26. Stelle ausgelesen und in ein Integer-Objekt gewandelt (Auch eine ArrayList beginnt bei 0 zu zählen).
Um die Vorteile von Array und ArrayList zu kombinieren, kann man so vorgehen, dass man zunächst alle gewünschten Elemente in eine ArrayList einfügt und diese dann in ein Array wandelt. Selbstverständlich dürfen hierzu nur gleiche Datentypen in der ArrayList gespeichert sein:

Noch einmal: es dürfen nur Objekte in einer ArrayList abgelegt werden. Das direkte Speichern des primitiven Datentyps int ist nicht möglich.
Möchte man ein Array primitiver Datentypen erzeugen, so muss dies explizit erzeugt werden:

import java.util.ArrayList;

public class ArrayListZuArrayClass {  
    public static void main(String[] args){
        ArrayList al = new ArrayList();
        int i=25;
        while(i<74){
            al.add(new Integer(i));
            i++;
        }
        Integer[] ia = new Integer[al.size()];
        al.toArray(ia);

        int[] inta = new int[al.size()];
        for(int n=0; n<inta.length; n++){
            inta[n]=ia[n].intValue();
            System.out.println(inta[n]);
        }
    }
}