Java passa sempre e solo parametri per copia, mai per riferimento.
Però gli oggetti (quindi non i tipi di dato primitivi) è come se fossero passati per riferimento in quanto la copia si riferisce alla copia del puntatore alla locazione di memoria.
Infatti la prova banale la puoi fare proprio con le strutture "mutabili" come vettori ed hashtable, ma anche con StringBuffer e così via (i tipi String, per contro, sono immutabili; per questo eventuali modifiche "Interne" ai metodi vengono perse all'esterno)

ciao