"Hai, Amigo, aku maneh, Ellie. Nuwun sewu yen bola-bali ngomong, nanging wis dadi adat ing Bumi ing abad kaping 31. Aku pengin menehi katrangan luwih lengkap babagan variabel referensi lan maringake variabel referensi menyang fungsi ( metode).

"Aku siyap."

"Apik, banjur ngrungokake. Variabel referensi yaiku variabel non-primitif. Variabel kasebut mung ngemot referensi obyek (referensi menyang obyek)."

"Variabel primitif ngemot nilai, dene variabel referensi nyimpen referensi kanggo obyek utawa null. Apa aku bener?"

"Pancen."

"Referensi apa?"

"Hubungan antarane obyek lan referensi obyek kaya hubungan antarane wong lan nomer telpon dheweke. Nomer telpon dudu wong, nanging bisa digunakake kanggo nelpon wong, takon sawetara informasi, ngatur dheweke, utawa menehi pesenan. Referensi uga digunakake kanggo nggarap obyek. Kabeh obyek sesambungan karo siji liyane nggunakake referensi."

"Kaya ngomong karo siji liyane liwat telpon?"

"Persis. Nalika variabel primitif ditugasake, nilai kasebut disalin. Yen referensi ditugasake, mung alamat obyek (nomer telpon) sing disalin. Obyek dhewe ora disalin. "

"Oke, aku entuk."

"Referensi menehi siji keuntungan liyane: sampeyan bisa ngirim referensi obyek kanggo cara apa wae, lan cara sing bakal bisa nggunakake referensi kanggo ngowahi (ngganti) obyek kanthi nelpon cara lan ngakses data nang obyek."

Conto 1
Nilai m lan n ora owah ing kene.
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;
  }
}
Lan kene sebabe.
Kode iki analog karo kode ing sisih kiwa
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);
  }
}

"Mung nilai 5 (m) lan 6 (n), masing-masing, ditugasake menyang variabelalanb;alanbngerti apa-apa bab (lan ora pengaruh ing sembarang cara) m lan n."

"Kanggo ngomong sing bener, aku saiki ngerti yen aku ora ngerti apa-apa. Apa sampeyan bisa menehi sawetara conto maneh?"

"Kanthi referensi obyek, kita bisa nindakake ing ngisor iki:"

Conto 2
Owah-owahan data obyek ing kode iki
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;
  }
}
Lan kene sebabe.
Kode iki analog karo kode ing sisih kiwa
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;
  }
}

"Referensi kanggo jen lan beth, mungguh, diutus kanggo variabel a lan b; a lan b ngganti nilai nang obyek jen lan beth."

"Lan sampeyan bisa ngumumake kelas ing kelas liyane, ta? Keren!"

"Nanging aku isih ora ngerti kabeh liyane banget."

"Kabeh ing wektune."