Quote Originariamente inviata da jimbo0 Visualizza il messaggio
in java non esiste il concetto di puntatore
Non esistono i puntatori come in C/C++ ... esistono i "reference" che sotto sotto alla fin fine sono degli "indirizzi" gestiti dalla JVM. Ma non hai il controllo (la "aritmetica" dei puntatori) come in C/C++.

Quote Originariamente inviata da jimbo0 Visualizza il messaggio
anche se due variabili possono riferirsi allo stesso oggetto.
così a e b si riferiscono allo stesso array e quindi operando su b[] opero anche su a[], giusto?
Sì.

Quote Originariamente inviata da jimbo0 Visualizza il messaggio
io so che in java esiste solo lo "scambio per valore", ossia al metodo è possibile passare il valore di una variabile/oggetto, non il riferimento.
Per essere precisi, viene sempre passata una copia del valore. E se si tratta di un reference, viene passata una copia del valore del reference, ovvero chiamante e chiamato hanno entrambi il riferimento allo stesso oggetto.

Quote Originariamente inviata da jimbo0 Visualizza il messaggio
avendo quindi un metodo che vuole restituire il primo elemento dell'array e impostarlo a 0:
codice:
public int returnFirst(int[] array){
int tmp=array[0];
array[0]=0;
return tmp;
}
dopo l'esecuzione di questo metodo il primo elemento dell'array nella funzione main chiamante è stato modificato dal metodo o no?
Sì, viene modificato dalla assegnazione a array[0]. E anche il chiamante che ha passato l'array "vede" la modifica (se ha e tiene il reference all'array, ovvio).