Java ragiona con gli oggetti, e un array una volta creato è e rimane un oggetto a sè stante finchè non viene distrutto dal garbage collector. Quindi pensare ad un array dinamico in Java è di per sè un pò assurdo perchè allo stesso modo funziona con le stringhe:
se io ho "ciao", non posso pensare di fare stringa[2] = "b" ed avere "cibo", perchè "ciao" è un oggetto, "cibo" un altro. Per fare quell'operazione è stato creato un altro oggetto chiamato StringBuffer.
A livello pratico io mi trovo molto bene con i Vector, ora surclassati dagli ArrayList e compari. Nel Vector hai 4 metodi che vanno benissimo, add(Object), get(int), size, remove(int). Con il JDK 1.5 i tipi elementari (int, long, boolean, ecc.) vengono direttamente racchiusi in oggetti (Integer, Long, Boolean, ecc.) che vengono accettati dal Vector. Con i JDK precedenti invece devi creare tu gli oggetti e poi inserirli nel Vector. Vedi tu, per me è molto comodo quando hai bisogno di lavorare su diversi dati.
A presto