Originariamente inviato da detrots
cosa che non accade per tipi primitivi e gli oggetti String, di cui viene eseguita una copia.
Anche le stringhe vengono passate, come tutti gli oggetti, per riferimento... ma essendo essi stessi oggetti immutabili, non si possono modificare.

Un esempio:
codice:
public class Confronto {
   private String a;

   public boolean test(String s) {
      return ( s == a );
   }

   public void confronta() {
      a = new String("Ciao");
      String b = new String("Ciao");
      System.out.println("Confronto la stringa usando il metodo: " + test(a));
      System.out.println("Confronto la stringa con un'altra con lo stesso contenuto: " + (a == b));
   }

   public static void main(String[] args) {
      Confronto c = new Confronto();
      c.confronta();
   }
}
Nell'esempio, l'oggetto "a" viene prima passato ad un metodo, il quale confronta il reference locale "s" con il reference globale "a"... e stampa true (dimostra che l'oggetto è esattamente lo stesso, non una copia).

Viene anche effettuato un confronto fra reference usando lo stesso oggetto "a" e un secondo oggetto "b" con lo stesso contenuto e viene stampato false (sono due oggetti con stesso contenuto, ma distinti).


Ciao.