Vedi se questo esempio puo' aiutarti:

codice:
class Test {
	int x;
	String str;
	MyClass myObj;

	Test() {
		x = 10;
		str = "Ciao";
		myObj = new MyClass();

	}

	public static void main(String args[]) {
		Test t = new Test();
		t.prova(t.x, t.str, t.myObj);
		System.out.println(t.x);
		System.out.println(t.str);
		t.myObj.show();
	}

	public void prova(int n, String s, MyClass obj) {
		n = 30;
		s = "Nuova Stringa";
		obj.msg = "Cambio tutto";
		System.out.println(n);
		System.out.println(s);
		obj.show();
	}
}

class MyClass {
	public String msg = "Dentro MyClass";
	public void show() {
		System.out.println(msg);
	}
}
In java ogni variabile e' passata per valore.
Cio' implica che i tipi fondamentali vengano copiati all'interno delle variabili passate al metodo.
Anche i nomi degli oggetti sono delle variabili, anche esse vengono quindi passati per valore, ma l'oggetto e' sempre quello, non viene copiato all'interno del metodo. Il nome dell'oggetto all'interno del metodo e' un riferimento all'oggetto esterno.
Scusa se non e' abbastanza chiaro, ma sto andando di fretta, se hai altri dubbi riprovero' quando torno (se non ci pensa qualcun' altro prima )

L'ultima cosa: utilizza i tag per formattare il codice, please.