"Ang Propesor ay hindi makaalis sa kanyang kinagisnan. Ang mga matatandang guro na sanay mag-lecture ay palaging ganito. Wala siyang masasabi sa iyo na hindi mo makikita sa mga libro. Hindi ka natututong lumangoy sa pakikinig . sa mga lecture sa paglangoy. Ang mga lektura ay kapaki-pakinabang lamang kapag pamilyar ka sa paksa at halos kasing dami ng iyong propesor."

"Gayunpaman, kapaki-pakinabang ang kanyang mga aralin."

"Yep. I mean, we hope they are. The more perspectives on the subject you hear, the closer you'll get to the truth. Kapag isa lang ang narinig mo, ang magagawa mo lang ay maniwala o hindi maniwala. OK, let's bumalik sa negosyo."

"Tingnan natin ang isang larawan na ipinakita ko sa iyo noon."


public class Variables

{
   private static String TEXT = "The end.";
  ┗━━━━━━━━━━━━━━━━━━━┛
   public static void main (String[] args)
                          ┗━━━━━━━┛
  {
     System.out.println("Hi");
     String s = "Hi!";
   ┏┗━━━━┛
    System.out.println(s);
    if (args != NULL)
    {
       String s2 = s;
      ┗━━━━┛
   
      System.out.println(s2);
     
    }
    Variables variables = new Variables();
    System.out.println(variables.instanceVariable);
    System.out.println(TEXT);
   
  }
 
   public String instanceVariable;
  ┗━━━━━━━━━━━━━━━┛
   public Variables()
   {
      instanceVariable = "Instance variable test.";
   }
}

1. Ang isang variable na idineklara sa isang pamamaraan ay umiiral (ay nakikita) mula sa simula ng deklarasyon nito hanggang sa katapusan ng pamamaraan.

2. Ang isang variable na ipinahayag sa isang bloke ng code ay umiiral hanggang sa katapusan ng bloke ng code.

3. Umiiral ang mga parameter ng pamamaraan hanggang sa bumalik ang pamamaraan.

4. Umiiral ang mga variable sa isang bagay sa buong buhay ng bagay na naglalaman ng mga ito. Ang kanilang visibility ay pinamamahalaan din ng mga espesyal na access modifier.

5. Umiiral ang mga static (class) na variable sa buong oras na tumatakbo ang programa. Ang kanilang visibility ay tinutukoy din ng mga modifier ng access."

"Right. I remember this picture."

"Mahusay. Paalalahanan kita tungkol sa ilang mahahalagang punto."

"Ang lahat ng mga variable na ipinahayag sa loob ng mga pamamaraan ay umiiral (ay nakikita) mula sa punto kung saan sila ay ipinahayag hanggang sa katapusan ng pamamaraan (Halimbawa 1)."

"Kung ang isang variable ay idineklara sa isang code block, ito ay umiiral hanggang sa katapusan ng code block (Halimbawa 2)."

"Kung ang isang variable ay isang parameter ng pamamaraan, ito ay umiiral (ay nakikita) sa buong katawan ng pamamaraan (Halimbawa 3)."

"Kung ang isang variable ay isang instance variable (Halimbawa 4), ito ay naka-link sa isang partikular na object at umiiral hangga't ang object ay umiiral. Kung walang object na umiiral, pagkatapos ay walang mga instance ng variable. Maaari mong i-access ang variable (ibig sabihin, ang variable ay makikita) mula sa lahat ng mga pamamaraan ng klase, hindi alintana kung sila ay idineklara bago o pagkatapos nito. Isang bagong variable ang nilikha para sa bawat bagay. Ito ay independiyente sa iba pang mga bagay. Hindi mo maa-access ang isang instance variable mula sa mga static na pamamaraan . "

"Kung ang isang variable ay idineklara na static, ibig sabihin ay minarkahan ng keyword na static , ito ay umiiral hangga't ang klase nito ay umiiral. Ang JVM ay karaniwang naglo-load ng isang klase sa memorya sa unang paggamit nito. Iyan din kapag ang mga static na variable ay sinisimulan."

Higit pa tungkol sa variable na saklaw - 1

"Idineklara ng halimbawa sa itaas ang klase ng Cat, na mayroong apat na variable: a, b, s (mga di-static na variable), at bilang (isang static na variable). Kung lilikha tayo ng ilang object ng klase na ito (sabihin, tatlo), bawat isa sa ang mga ito ay maglalaman ng sarili nitong mga pagkakataon ng mga hindi static na variable ng klase. Ang isang static na variable ay ibinabahagi ng lahat ng mga bagay ng isang klase. Sa teknikal na pagsasalita, wala ito sa loob ng mga bagay na ito, dahil umiral na ito bago pa man nalikha ang anumang mga object ng Cat."

"Narito ang mangyayari kung idedeklara namin ang variable sna static:"

Higit pa tungkol sa variable na saklaw - 2

"OK. I think I get it."

"Maaari ka bang magdeklara ng mga variable na may parehong pangalan?"

"Wala sa loob ng isang pamamaraan. Ang lahat ng mga variable na idineklara sa loob ng isang pamamaraan ay dapat may mga natatanging pangalan. Ang mga argumento ng isang pamamaraan ay itinuturing din na mga lokal na variable."

"Paano ang mga variable ng miyembro?"

"Ang mga variable ng miyembro ay dapat ding natatangi para sa bawat klase."

"Ngunit mayroong isang pagbubukod: ang mga pangalan ng mga lokal na variable at mga variable ng miyembro ay maaaring magkapareho. "

"Kung babaguhin natin ang naturang variable, alin sa dalawang variable na magkapareho ang pangalan ang mababago?"

"Kung may ilang nakikitang (naa-access) na mga variable sa aming code – sabihin nating, isang instance variable at isang lokal na variable – ang lokal na variable ay maa-access."

Halimbawa na may dalawang variable na bilang
class Main
{
    public int count = 0;     // Declare an instance variable

    public void run()
    {
        count = 15;           // Access the instance variable
        int count = 10;       // Declare a local method variable
        count++;             // Access the method variable
    }
}

"Ang code na ito ay nagdedeklara ng dalawang bilang ng mga variable. Ang Linya 3 ay nagdedeklara ng isang instance variable , at ang linya 8 – isang lokal na variable ."

"Narito kung ano ang mangyayari kapag ang run method ay naisakatuparan:"

"Sa linya 7, ina-access namin ang variable ng instance at itinalaga ang halaga 15 dito"

"Sa linya 8, ipinapahayag namin (lumikha) ng bagong lokal na variable : count. Itinatakpan nito ang variable ng instance. Ang lokal na variable ay kung ano ang makikita ng lahat ng kasunod na code sa pamamaraan (access)."

"Nakuha ko."

"Pinagtatakpan ng lokal na variable ang variable ng instance. Sa madaling salita, ang lokal na variable ang maa-access. Gayunpaman, maa-access mo rin ang variable ng instance. Medyo mas kumplikado lang ang paggawa nito."

Static (class) na variable
ClassName.variableName

// Here are some examples:
Cat.catsCount
Non-static (instance) na variable
this.variableName

// Here are some examples:
this.catsCount

"Ano pa ang masasabi mo sa akin tungkol sa mga static na pamamaraan at mga static na variable?"

"Ang mga static na pamamaraan at variable ay hindi naka-link sa mga object ng klase; naka-link sila sa klase mismo. Kung lilikha tayo ng sampung variable na object (tingnan ang halimbawa sa simula ng level na ito), magkakaroon tayo ng sampung instanceVariable variable (isa para sa bawat isa. object) at isa lamang ang nakabahaging (static) na variable na TEXT ."

"May tanong ako."

"Ano ang pagkakaiba sa pagitan ng mga static at non-static na pamamaraan?"

"Tingnan natin kung paano gumagana ang isang non-static na pamamaraan:"

Ano ang hitsura ng code
Cat cat = new Cat();
String name = cat.getName();
cat.setAge(17);
cat.setChildren(cat1, cat2, cat3);
Kung ano talaga ang nangyayari
Cat cat = new Cat();
String name = Cat.getName(cat);
Cat.setAge(cat,17);
Cat.setChildren(cat, cat1, cat2, cat3);

"Kapag tumawag ka ng isang pamamaraan gamit ang <object> dot <method name> , talagang tumatawag ka sa isang class method at ipinapasa ang parehong object bilang ang unang argumento. Sa loob ng method, ang object ay tinatawag na 'this' . Lahat ng mga operasyon sa ang pamamaraan ay ginagawa sa bagay na ito at sa data nito."

"Wow! Kaya ganyan ang lahat!"

"At ito ay kung paano gumagana ang isang static na pamamaraan."

Ano ang hitsura ng code
Cat cat1 = new Cat();
Cat cat2 = new Cat();
int catCount = Cat.getAllCatsCount();
Kung ano talaga ang nangyayari
Cat cat1 = new Cat();
Cat cat2 = new Cat();
int catCount = Cat.getAllCatsCount(null);

"Kapag tumawag ka ng isang static na pamamaraan, walang bagay na ipinapasa dito. Sa madaling salita, 'ito' ay katumbas ng null . Iyon ang dahilan kung bakit ang isang static na pamamaraan ay hindi ma-access ang mga hindi static na variable at pamamaraan (dahil wala itong 'ito' na ipapasa sa mga pamamaraang ito).

"Hmmm. I think I get it. Kahit konti."

"At narito si Tiyo Diego... at ang kanyang mga gawain."