"Kumusta, Amigo, ako na naman, Ellie. Paumanhin sa paulit-ulit na pagsasabi niyan, ngunit nakaugalian na ito sa Earth noong ika-31 siglo. Gusto kong bigyan ka ng higit pang mga detalye tungkol sa mga reference variable at pagpasa ng mga reference variable sa mga function ( paraan)."

"Handa na ako."

"Mahusay, pagkatapos makinig. Ang mga reference na variable ay anumang hindi primitive na variable. Ang mga naturang variable ay naglalaman lamang ng isang object reference (isang reference sa isang object)."

"Ang mga primitive na variable ay naglalaman ng mga halaga, habang ang mga reference na variable ay nag-iimbak ng mga sanggunian sa mga bagay o null. Tama ba ako?"

"Talagang."

"Anong reference?"

"Ang relasyon sa pagitan ng isang bagay at isang object reference ay tulad ng relasyon sa pagitan ng isang tao at ng kanyang numero ng telepono. Ang numero ng telepono ay hindi ang tao, ngunit maaari itong gamitin upang tawagan ang tao, humingi ng ilang impormasyon, pamahalaan siya, o magbigay ng mga order. Ginagamit din ang isang sanggunian upang gumana sa mga bagay. Ang lahat ng mga bagay ay nakikipag-ugnayan sa isa't isa gamit ang mga sanggunian."

"As if nag-uusap sila sa phone?"

"Eksakto. Kapag ang isang primitive na variable ay itinalaga, ang halaga ay kinopya. Kung ang isang sanggunian ay itinalaga, tanging ang address ng bagay (ang numero ng telepono) ang makokopya. Ang bagay mismo ay hindi kinokopya. "

"OK, nakuha ko."

"Ang isang sanggunian ay nagbibigay sa iyo ng isa pang benepisyo: maaari kang magpasa ng isang sanggunian sa bagay sa anumang pamamaraan, at ang pamamaraang iyon ay magagamit ang sanggunian upang baguhin (baguhin) ang bagay sa pamamagitan ng pagtawag sa mga pamamaraan nito at pag-access ng data sa loob ng bagay."

Halimbawa 1
Ang mga halagang m at n ay hindi nagbabago dito.
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;
  }
}
At narito kung bakit.
Ang code na ito ay kahalintulad sa code sa kaliwa
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);
  }
}

"Tanging ang mga halagang 5 (m) at 6 (n), ayon sa pagkakabanggit, ay itinalaga sa mga variableaatb;aatbwalang alam tungkol sa (at hindi nakakaimpluwensya sa anumang paraan) m at n."

"To tell you the truth, I now realize na wala akong naintindihan. Can you give me a few more examples?"

"Sa isang object reference, nagawa sana namin ang mga sumusunod:"

Halimbawa 2
Ang data ng mga bagay ay nagbabago sa code na ito
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;
  }
}
At narito kung bakit.
Ang code na ito ay kahalintulad sa code sa kaliwa
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;
  }
}

"Ang mga sanggunian sa jen at beth, ayon sa pagkakabanggit, ay itinalaga sa mga variable na a at b; binabago ng a at b ang mga halaga sa loob ng mga bagay na jen at beth."

"And you can declare classes inside of other classes, right? Cool!"

"Ngunit hindi ko pa rin maintindihan ang lahat ng iba pa."

"Lahat sa takdang panahon."