Ciao a tutti

Vorrei fare un metodo avente come parametri espliciti due array (a e b) che dia come valore di ritorno un array che sia identico all'array tra a e b più capiente (per intenderci, con più disponibilità di spazio per contenere variabili, con un numero di indice massimo più grande).

Molto semplicemente ho pensato a questo:

codice:
public static int [] arrayMax(int[]a, int[]b){
        if (a.length>b.length){
            a=b;
            b=a;
        }
        return b;
    }

L'algoritmo ragiona nel seguente modo: b viene considerato il più capiente. Se è così realmente, il programma ritorna direttamente b, altrimenti (condizione if) vengono cambiati i riferimenti ai due array, e così il ragionamento per b va ancora bene.

O meglio, dovrebbe! Perché a quanto pare non funziona proprio così. Alla fine il metodo, anche dopo essere entrato nell'if, ritorna comunque un array identico a b (qualsiasi sia la lunghezza di b rispetto ad a).

Qualcuno mi sa gentilmente spiegare perché non funziona? Che alternative altrettanto brevi ci sarebbero?

Grazie mille