Allora..java pur condividendo costrutti e caratteristiche comuni è molto, ma molto diverso dal c!Se hai appena iniziato a programmare ti consiglierei di leggerti prima qualche tutorial ke ti spieghi le differenze (tipo qua http://telemat.die.unifi.it/book/Int...va/java-15.htm) e l'approccio giusto, sennò continuerai a sbagliare.

In java, a differenza del c, la maggiorparte dei dati è allocata DINAMICAMENTE, quindi non ha senso cercare un costrutto malloc: quando tu fai
codice:
 int a[] = new int[5];
stai già allocando quell'array sull'heap!
La soluzione di vincenzo è questa:
-salvi temporaneamente l'array puntato da a in un riferimento temporaneo b:
-assegni a ad un nuovo array della nuova dimensione (a=new int[10], ke so), quindi in pratica allocando un qualcosa di completamente nuovo.
-copi, tramite ad esempio un for, b in a.
-aggiungi in coda ad a i nuovi elementi.

A differenza del c non devi preoccuparti della memoria persa xke java la pulirà autonomamente una volta accortasi ke non c'è più niente ke punta a quella zona.

Concludo dicendo ke, ovviamente, c sn classi + raffinate x fare questo, come ad esempio Vector o List ma se stai iniziando adesso è bene abituarti agli array.