OCA Java imtahan mövzuları

Local Variables | Instance and Class Variables

Local Variables

Lokal dəyişənlər metod daxilində yaradılmış dəyişənlərdir. Lokal dəyişənlərin varsayılan (default) dəyəri olmur, ona görə də onları istifadə etməzdən əvvəl mütləq dəyər mənimsədilməlidir.

Aşağıdakı kod nümunəsi üzərindən davam edək:

public void testLocalInitialization() {
    int count = 5;
    int number;

    if (count > 5)       number = 1;
    else if (count <= 5) number = 2;

    System.out.println(number);    // doesn`t compile
}

number dəyişəninə dəyər mənimsədilməmiş istifadə edildiyinə görə compile error verir. Biz fikirləşə bilərik ki, axı if şərtinin içərisində dəyər mənimsədilib, count ya 5-dən böyükdür, ya bərabərdir, ya da kiçikdir. Axı istənilən halda bu iki şərtdən biri ödənəcək. Bəs onda niyə compiler number`i dəyəri mənimsədilməmiş kimi görür?! Çünki compile time vaxtı compiler bunu təyin edə bilmir, ancaq run edildikdən sonra bilir. Amma əgər biz count dəyişənini final elan etsək o zaman compile olunacaq. Və yaxud da sona else ifadəsi əlavə etsək, compile olunacaq. Çünki if-else strukturunda dəyər mənimsədildikdə compiler başa düşür ki, heç bir şərtdən asılı olmayaraq istənilən halda if şərti ödənməsə, else blokuna müraciət olunacaq və dəyər mənimsədiləcək.

public void testLocalInitialization() {
    int count = 5;
    int number;

    if (count > 5)       number = 1;
    else if (count <= 5) number = 2;
    else                 number = 3;

    System.out.println(number);    // does compile
}

Dəyişən final elan edildikdə isə compiler başa düşür ki, həmin dəyişənin dəyəri heç vaxt dəyişə bilməz və ona görə də compiler həmin dəyişənin dəyərini birbaşa şərtə qoyub yoxlayır.

public void testLocalInitialization() {
    final int count = 5;
    int number;

    if (count > 8)       number = 1;
    else if (count <= 4) number = 2;

    System.out.println(number);    // doesn`t compile
}

Bu şəkildə də başa düşə bilərik:

  • if (5 > 8)       number = 1;
    else if (5 <= 4) number = 2;

Əgər şərtlərdən biri geriyə true dəyər qaytararsa, kod compile olacaq:

  • if (5 > 8) number = 1;
    else if (5 <= 5) number = 2;

 

Instance and Class Variables

Java`da local dəyişənlərdən əlavə instanceclass dəyişənləri də mövcuddur. Instance dəyişənlər həm də “fields” adlandırılır. Instance və class dəyişənlər lokal dəyişənlərdən fərqli olaraq class`ın daxilində, amma metodun xaricində elan edilir. Lokal dəyişənlərdən digər fərqləri isə odur ki, bu növ dəyişənlər istifadə edilmədən öncə dəyər mənimsədilməsi (initialize) tələb etmir. Instance və class dəyişənlər artıq elan olunan vaxtı onlara susmaya görə (default) dəyər mənimsədilir. Susmaya görə dəyərlərlə aşağıdakı cədvəldən tanış ola bilərsiniz:

Dəyişənin tipi

Mənimsədilən default dəyər

boolean false
byte, short, int, long 0
float, double 0.0
char '\u0000'
Bütün obyekt tipləri üçün null

Class dəyişənləri ilə instance dəyişənlərinin fərqi isə odur ki, class dəyişənlərin önündə static açar sözü yazılır, buna görə də bu dəyişənlər həm də static dəyişənlər adlandırılır. Static dəyişənlər classın instansını yaratmadan birbaşa class adının özü ilə müraciət etməklə digər classlarda çağırıla bilər. Növbəti chapter`lərdə bu barədə daha ətraflı məlumat veriləcək.

 

Bütün mövzulara bax

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.