L'operatore confronto (==) restituisce true solo se le due variabili puntano alla stessa area di memoria. Se tu avessi passato hai metodi delle variabili tipo new String("prova1") ti avrebbe restituito false. Invece, passando direttamente il valore, java cosa fa: salva in tre aree di memoria le stringhe "prova1", "prova2" e "prova3" e passa queste variabili (le stesse) ad ambedue le strutture. L'operatore == vedendo che le variabili puntano alla stessa area di memoria, restituisce true.
Spe' leggi qua che e' spiegato un po' meglio.
http://forum.html.it/forum/showthrea...=&pagenumber=1
In ogni caso usa sempre equals per il confronto, perche' se gli stessi valori arrivano da classi diversi e credo anche da metodi diversi puntano ad aree diverse di memoria.