JavaRush /Курстар /All lectures for KY purposes /Өзгөрмөлөрдүн көрүнүшү

Өзгөрмөлөрдүн көрүнүшү

All lectures for KY purposes
Деңгээл , Сабак
жеткиликтүү

1. Локалдык өзгөрмөлөр

Өзгөрмөлөр жөнүндө бир аз олуттуу сүйлөшөлү. Бирок бул жолу алардын ички түзүлүшү эмес, өзгөрмөлөрдүн жайгашкан код менен өз ара аракеттенүүсүн талкуулайбыз.

Методдордун ичинде жарыяланган бардык өзгөрмөлөр локалдык өзгөрмөлөр деп аталат. Локалдык өзгөрмө ал жарыяланган коддун блокто гана жашайт. Же, так айтканда, жарыяланган учурдан баштап, ошол коддун блоктун аягына чейин жашайт.

Жөнөкөй мисал карап көрөлү:

Код Өзгөрмөлөрдүн жеткиликтүүлүгү
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

Локалдык өзгөрмөлөрдүн жеткиликтүүлүгү тууралуу кайталап сүйлөшөлү. Бул жерде коддун блогу бар, ал фигурные скобками аяктайт: бул методдун денеси, циклдин денеси же шарттуу оператордун код блогу болушу мүмкүн. Код блокто жарыяланган өзгөрмө ошол код блоктун аягына чейин жашайт.

Эгер өзгөрмө циклдин денесинде жарыяланса, ал циклдин денесинде гана жашайт. Ар бир айлампада жаралып жана жок болот.

Бир методдо бирдей ат менен эки локалдык өзгөрмө жарыялоо мүмкүн эмес — программа компиляцияланбай калат. Бирок, эгер өзгөрмөлөр жарыяланган код блоктору кесилишинде эмес болсо, анда мүмкүн.

Мисал:

Код Өзгөрмөлөрдүн жеткиликтүүлүгү
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

b деген аталыштагы экинчи локалдык өзгөрмөнү биринчисинин b өзгөрмөсү экинчи өзгөрмө b жарыяланган код блоктун ичинде көрүнбөйт, ошондуктан жарыялай алдык.


2. Параметрлүү өзгөрмөлөр

Мурда айтылгандай, ар бир методдун параметрлүү өзгөрмөлөрү болушу мүмкүн. Алардын көрүнүшү жана өмүр талабычы?

Бул жерде баары оңой. Параметрлүү өзгөрмөлөр методдун коду иштей баштаганда жаралып, метод аяктагандан кийин жок болот. Алар методдун денесинде бар.

Мисал:

Код Өзгөрмөлөрдүн жеткиликтүүлүгү
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

Мурда айткандай, args — бул жон эле сап массивинин өзгөрмөсү. Жана бардык параметрлүү өзгөрмөлөр сыяктуу, ал методдун денесинде бардык жерде жеткиликтүү. Чынында, бул өзгөрмөнү мисалдарда байкабайбыз.



3. Класс өзгөрмөлөрү

Эсиңерде болсо, 1-деңгээлдеги лекциялардан, класс функциялар жана өзгөрмөлөрдү камтышы мүмкүн. Функциялар "класс методдору", ал эми өзгөрмөлөр "класс өзгөрмөлөрү" же "класс талаалары" деп аталат. Java алкагында булар синонимдер.

Класстын өзгөрмөлөрү (же талаалары) деген эмне?

Класстын өзгөрмөлөрү — бул методдордо эмес, класс блогу ичинде жарыяланган өзгөрмөлөр.

Класс методдорунан бул өзгөрмөлөргө кайрыла алабыз. Жалпылап айтканда класс өзгөрмөлөрү — бул класс методдорунун баарына жеткиликтүү жалпы өзгөрмөлөр.

Мисал:

Код Өзгөрмөлөрдүн жеткиликтүүлүгү
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

Бул мисалда, бизде эки метод бар — add() жана remove(). add() методу класстын өзгөрмөлөрүн sum жана count жогорулатат, ал эми remove() методу sum жана count өзгөрмөлөрүн төмөндөтөт. Эки метод тең жалпы класстын өзгөрмөлөрү менен иштейт.

Локалдык өзгөрмөлөр метод аткарылып жатканда жашайт. Класс өзгөрмөлөрү болсо, алар таандык класс объектиси жашаганга чейин жашайт. Класс объекттери тууралуу көбүрөөк кийинки деңгээлде үйрөнө турган болосуңар.


4. Статикалык өзгөрмөлөр

Класс өзгөрмөлөр, ошондой эле класс методдору, статикалык жана статикалык эмес (кадимки) болуп бөлүнөт. Статикалык методдор статикалык өзгөрмөлөргө гана кайрыла алат.

11-деңгээлде статикалык өзгөрмөлөрдүн жана методдордун түзүлүшүн талдайбыз жана мындай чектөөлөрдүн себептерин түшүнөбүз.

Класстын өзгөрмөсүн статикалык кылуу үчүн, аны жарыялоо алдында static ачкыч сөзүн жазуу керек.

Статикалык өзгөрмөлөр алар жарыяланган класстын объектине эмес, өзү класска байланган. Ошондуктан алар эч кандай класстын объектиси түзүлбөсө да бар болот. Аларга башка класстардан кайрылуу төмөнкүдөй түзүм аркылуу болот:

ClassName.variableName

Мисал:

Код Өзгөрмөлөрдүн жеткиликтүүлүгү
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

Жогорудагы мисалда, биз Storage деген өзүнчө класс түздүк, анан count жана sum өзгөрмөлөрүн ошол класска алып барып, аларды статикалык деп жарыяладык. Коомдук статикалык өзгөрмөлөргө программадагы каалаган методдон кайрыла аласыз (калгандары гана эмес, методдор да).



Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION