Salve a tutti,
mi sono imbattuto in un esercizio java, che simula il mescolamento di un mazzo di 52 carte, ma c'è un punto che non riesco a capire...
posto il codice:

Classe Carta

codice:
public class  Carta {

private String valore;
private String seme;

public Carta (String valoreCarta, String semeCarta)
{
valore = valoreCarta;
seme = semeCarta;
}
}
Classe MazzoDiCarte

codice:
import java.util.Random;
public class MazzoDi Carte
{

   private Carta mazzo[];
   private int prossimaCarta;
   private final int NUMERO_DI_CARTE = 52;
   private Random numeroCasuale;

   public MazzoDiCarte()
   {

      String valori[] = {"ASSO", "DUE", "TRE", "QUATTRO", "CINQUE", "SEI", "SETTE", "OTTO", "NOVE", "DIECI", "JACK", "DONNA", "RE"};

      String semi[] = { "CUORI", "QUADRI", "FIORI", "PICCHE" };

      mazzo = new Carta [ NUMERO_DI_CARTE ];
      prossimaCarta = 0;
      numeroCasuale = new Random();

      for ( int cont = 0; cont < mazzo.length; cont++)

         mazzo [ cont ]= new Carta (valori [cont % 13], semi [cont / 13]);
}//fine costruttore

//mescola il mazzo di carte


      public void mescola()

      {

      prossimaCarta = 0;

      //per ogni carta scegline un'altra a caso e scambiale

      for ( int first = 0; first < mazzo.length; first++)

      {
      int second = numeroCasuale.nextInt ( NUMERO_DI_CARTE );

      //scambia la Carta corrente con quella presa casualmente
      Carta temp = mazzo [first];
      mazzo[first] = mazzo [second];
      mazzo [second] = temp;

      }//fine for

      }

   }
Il mio dubbio è questo:

codice:
           Carta temp = mazzo [first];
crea una variabile "reference" temp che punta all'indice first dell'array mazzo;

codice:
mazzo[first] = mazzo [second];
assegna all'indice first dell'array mazzo, il valore dell'indice second (che è un numero casuale) dello stesso array;

a questo punto, a rigor di logica (per un neofita come me )
temp, mazzo[first] e mazzo [second] dovrebbero essere uguali, dato che la variabile "reference" temp, punta allo stesso oggetto di mazzo[first], e, dopo l'istruzione

codice:
mazzo[first] = mazzo [second];
tutti e tre hanno lo stesso valore..

qualcuno sarebbe così gentile da dimostrarmi il contrario????


grazie in anticipo