"Hai, Amigo, saya sekali lagi, Ellie. Maaf kerana mengatakannya berulang kali, tetapi ia adalah kebiasaan di Bumi pada abad ke-31. Saya ingin memberi anda butiran lanjut tentang pembolehubah rujukan dan menghantar pembolehubah rujukan kepada fungsi ( kaedah)."

"Saya sudah bersedia."

"Hebat, kemudian dengar. Pembolehubah rujukan ialah sebarang pembolehubah bukan primitif. Pembolehubah tersebut hanya mengandungi rujukan objek (rujukan kepada objek)."

"Pembolehubah primitif mengandungi nilai, manakala pembolehubah rujukan menyimpan rujukan kepada objek atau null. Betulkah saya?"

"Sama sekali."

"Apa rujukan?"

"Hubungan antara objek dan rujukan objek adalah seperti hubungan antara seseorang dan nombor telefonnya. Nombor telefon itu bukan orang itu, tetapi ia boleh digunakan untuk menghubungi orang itu, meminta maklumat, mengurusnya atau memberi perintah. Rujukan juga digunakan untuk bekerja dengan objek. Semua objek berinteraksi antara satu sama lain menggunakan rujukan."

"Seolah-olah mereka bercakap antara satu sama lain melalui telefon?"

"Tepat sekali. Apabila pembolehubah primitif ditetapkan, nilai akan disalin. Jika rujukan diberikan, hanya alamat objek (nombor telefon) disalin. Objek itu sendiri tidak disalin. "

"OK, saya faham."

"Rujukan memberi anda satu lagi faedah: anda boleh menghantar rujukan objek kepada mana-mana kaedah, dan kaedah itu akan dapat menggunakan rujukan untuk mengubah suai (menukar) objek dengan memanggil kaedahnya dan mengakses data di dalam objek."

Contoh 1
Nilai m dan n tidak berubah di sini.
public class References
{
  public static void main (String[] args)
  {
    int m = 5;
    int n = 6;

    System.out.println("M=" + m + " N=" + n);
    swap(m, n);
    System.out.println("M=" + m + " N=" + n);
  }

  private static void swap(int a, int b)
  {
    int c = a;
    a = b;
    b = c;
  }
}
Dan inilah sebabnya.
Kod ini serupa dengan kod di sebelah kiri
public class References
{
  public static void main (String[] args)
  {
    int m = 5;
    int n = 6;

    System.out.println("M=" + m + " N=" + n);
    int a = m, b = n;

    int c = a;
    a = b;
    b = c;

    System.out.println("M=" + m + " N=" + n);
  }
}

"Hanya nilai 5 (m) dan 6 (n), masing-masing, diberikan kepada pembolehubahadanb;adanbtidak tahu apa-apa tentang (dan tidak mempengaruhi dalam apa cara sekalipun) m dan n."

"Sebenarnya, saya kini sedar bahawa saya tidak faham apa-apa. Bolehkah anda memberi saya beberapa contoh lagi?"

"Dengan rujukan objek, kami boleh melakukan perkara berikut:"

Contoh 2
Data objek berubah dalam kod ini
public class Primitives
{
  public static void main(String[] args)
  {
    Student jen = new Student();
    jen.name = "Jen";
    jen.age = 21;

    Student beth = new Student();
    beth.name = "Beth";
    beth.age = 15;

    System.out.println("Jen is " + jen.age);
    System.out.println("Beth is " + beth.age);

    ageSwap(jen, beth);

    System.out.println("Jen is " + jen.age);
    System.out.println("Beth is " + beth.age);
  }

  private static void ageSwap(Student a,
                                    Student b)
  {
    int c = a.age;
    a.age = b.age;
    b.age = c;
  }

  static class Student
  {
    String name;
    int age;
  }
}
Dan inilah sebabnya.
Kod ini serupa dengan kod di sebelah kiri
public class Primitives
{
  public static void main(String[] args)
  {
    Student jen = new Student();
    jen.name = "Jen";
    jen.age = 21;

    Student beth = new Student();
    beth.name = "Beth";
    beth.age = 15;

    System.out.println("Jen is " + jen.age);
    System.out.println("Beth is " + beth.age);

    Student a = jen, b = beth;

    int c = a.age;
    a.age = b.age;
    b.age = c;

    System.out.println("Jen is " + jen.age);
    System.out.println("Beth is " + beth.age);
  }





  static class Student
  {
    String name;
    int age;
  }
}

"Rujukan kepada jen dan beth, masing-masing, diberikan kepada pembolehubah a dan b; a dan b menukar nilai di dalam objek jen dan beth."

"Dan anda boleh mengisytiharkan kelas di dalam kelas lain, kan? Sejuk!"

"Tetapi saya masih tidak memahami segala-galanya dengan baik."

"Semua dalam masa yang ditetapkan."