JavaRush /Kurslar /All lectures for UZ purposes /O'zgaruvchilar ko'rinishi

O'zgaruvchilar ko'rinishi

All lectures for UZ purposes
Daraja, Dars
Mavjud

1. Mahalliy o'zgaruvchilar

O'zgaruvchilar haqida jiddiyroq gaplashaylik. Ammo bu safar ularning ichki tuzilmasini emas, balki kod bilan o'zaro ta'sirini muhokama qilamiz.

Metod ichida e'lon qilingan barcha o'zgaruvchilar mahalliy o'zgaruvchilar deb ataladi. Mahalliy o'zgaruvchi faqat e'lon qilingan kod blokida mavjud bo'ladi. Yoki aniqroq aytganda, e'lon qilingan vaqtdan boshlab, kod bloki tugaguncha mavjud bo'ladi.

Oddiy qilib tushunish uchun misol keltiraylik:

Kod O'zgaruvchilar ko'rinishi
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     while (true)
     {
       int x = a + b;
       System.out.println(x);
     }
     System.out.println(b);
   }

}


a
a
a
a, b
a, b
a, b
a, b, x
a, b, x
a, b
a, b
a
a

Mahalliy o'zgaruvchilar ko'rinishini yana bir bor muhokama qilaylik. Mana, joriy kod bloki mavjud: bu metoda, tsiklga yoki shartli operator kod blokiga tegishi mumkin. Kod blokida e'lon qilingan o'zgaruvchi shu kod bloki tugaguncha mavjud bo'ladi.

Agar o'zgaruvchi tsikl tanasida e'lon qilinsa, u faqat tsikl tanasida mavjud bo'ladi. Tsikl har bir aylanishida yaratiladi va yo'q bo'ladi.

Bir xil nomli ikki mahalliy o'zgaruvchini bir metodda e'lon qilish mumkin emas — dastur kompilyatsiya qilinmaydi. Ammo kod bloklari bir-birini kesib o'tmasa, e'lon qilish mumkin.

Misol:

Kod O'zgaruvchilar ko'rinishi
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     System.out.println(b);
   }

   if (a < 20)
   {
     int b = 20;
     System.out.println(b);
   }
}


a
a
a
a, b
a, b
a
a
a
a
a, b
a, b
a

Ikkinchi b mahalliy o'zgaruvchini e'lon qila oldik, chunki birinchi b o'zgaruvchisi, ikkinchi b o'zgaruvchisi e'lon qilingan kod blokida ko'rinmaydi.


2. Parametr o'zgaruvchilari

Ko'rib o'tganimizdek, har bir metodning parametr o'zgaruvchilari bo'lishi mumkin. Ulardan ko'rinish va yashash muddati haqida nima deyish mumkin?

Bu juda oson. Parametr o'zgaruvchilar metod ishga tushirilganda yaratiladi va metod tugashi bilan yo'q qilinadi. Ular metod tanasining barcha joyida mavjud.

Misol:

Kod O'zgaruvchilar ko'rinishi
public static void main(String[] args)
{
   int a = 5;
   if (a < 10)
   {
     int b = 10;
     while (true)
     {
       int x = a + b;
       System.out.println(x);
     }
     System.out.println(b);
   }

}

args
args, a
args, a
args, a
args, a, b
args, a, b
args, a, b
args, a, b, x
args, a, b, x
args, a, b
args, a, b
args, a
args, a

Boshida aytganimizdek, args — bu shunchaki string array turi. Va boshqa parametr o'zgaruvchilar kabi, u metod tanasida har joyda ko'rinadi. Garchi biz misollarda uni e'tiborsiz qoldirib ketgan bo'lsak ham.



3. Klass o'zgaruvchilari

1-darslaridan eslayotganingizdek, klass funksiyalar va o'zgaruvchilarni o'z ichiga olishi mumkin. Shu bilan birga, funksiyalar odatda «klass metodlari», o'zgaruvchilar esa «klass o'zgaruvchilari» yoki «klass maydonlari» deb ataladi. Aslida, Java doirasida bu sinonimlar.

Xo'sh, klass o'zgaruvchilari (yoki maydonlari) nima?

Klass o'zgaruvchilari — bu metodda emas, klassda e'lon qilingan o'zgaruvchilar.

Klassdagi har qanday metoddan ularga murojaat qilish mumkin. Qisqacha aytganda klass o'zgaruvchilari — bu klassning barcha metodlari uchun umumiy o'zgaruvchilar.

Misol:

Kod O'zgaruvchilar ko'rinishi
public class Solution
{
   public int count = 0;
   public int sum = 0;

   public void add(int data)
   {
     sum = sum + data;
     count++;
   }

   public void remove(int data)
   {
     sum = sum - data;
     count--;
   }
}


count
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum
count, sum
count, sum
count, sum, data
count, sum, data
count, sum, data
count, sum
count, sum

Bu misolda bizda ikki metod mavjud — add() va remove(). add() metodi sum va count klass o'zgaruvchilarini oshiradi, remove() metodi esa sum va count o'zgaruvchilarini kamaytiradi. Har ikkala metod ham klassning umumiy o'zgaruvchilari bilan ishlaydi.

Mahalliy o'zgaruvchilar metod ishga tushirilganda mavjud bo'ladi. Klass o'zgaruvchilari esa o'zlariga tegishli klass obyekti mavjud bo'lgan vaqt davomida mavjud bo'ladi. Bu haqda klass obyektlari haqida navbatdagi darajada ko'proq ma'lumot olasiz.


4. Statik o'zgaruvchilar

Klass o'zgaruvchilari ham statik, ham nostatik (oddiy) bo'lishi mumkin. Statik metodlar faqat statik o'zgaruvchilarga murojaat qilishlari mumkin.

11-darsda statik o'zgaruvchilar va metodlar tuzilishini ko'rib chiqamiz va bunday cheklovlarning sabablarini tushunamiz.

Klass o'zgaruvchisini statik qilish uchun, e'lon qilishdan oldin static kalit so'zini yozish kerak.

Statik o'zgaruvchilar, ular e'lon qilingan klass obyektiga emas, balki to'g'ridan-to'g'ri klassning o'ziga bog'langan bo'ladi. Shuning uchun ular birorta ham klass turidagi obyekt yaratilmagan bo'lsa ham mavjud bo'ladi. Ular boshqa klasslardan quyidagi shaklda murojaat qilinishi mumkin:

ClassName.variableName

Misol:

Kod O'zgaruvchilar ko'rinishi
public class Solution
{
   public void add(int data)
   {
     Storage.sum = Storage.sum + data;
     Storage.count++;
   }

   public void remove(int data)
   {
     Storage.sum = Storage.sum - data;
     Storage.count--;
   }
}

public class Storage
{
   public static int count = 0;
   public static int sum = 0;
}

Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum, data
Storage.count, Storage.sum



Storage.count, Storage.sum
Storage.count, Storage.sum
Storage.count, Storage.sum

Yuqorida keltirilgan misolda biz Storage nomli alohida klass yaratdik, count va sum o'zgaruvchilarni unga ko'chirdik va ularni statik deb e'lon qildik. Umumiy statik o'zgaruvchilarga dasturdagi har qanday metoddann (va nafaqat metoddan) murojaat qilish mumkin.



Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION