1. Локални променливи

Нека поговорим по-сериозно за променливите. Но този път няма да обсъждаме вътрешното им устройство. Вместо това ще се съсредоточим върху това How променливите взаимодействат с codeа, където се намират.

Всички променливи, които са декларирани в методите, се наричат ​​локални променливи . Локална променлива съществува само в блока code, в който е декларирана. Или по-точно съществува от момента, в който е деклариран до края на блока code, в който е деклариран.

За простота, нека разгледаме един пример:

Код Променлива видимост
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

Нека поговорим за достъпа до локални променливи още веднъж. Ето блок code, състоящ се от фигурни скоби: това може да бъде тяло на метод, тяло на цикъл or просто блок code за условен оператор. Променлива, декларирана в блок от code, съществува до края на този блок от code.

Ако променлива е декларирана в тялото на цикъла, тя ще съществува само в тялото на цикъла. Той се създава и унищожава при всяка итерация на цикъла.

Не можете да декларирате две локални променливи с едно и също име в един метод — програмата няма да се компorра. Но можете да направите това, ако блоковете от code, където са декларирани променливите, не се припокриват.

Пример:

Код Променлива видимост
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 само защото първата променлива не се вижда в codeовия блок, където е декларирана b втората променлива.b


2. Параметри

Както казахме преди, всеки метод може да има променливи, които наричаме параметри. Какво ще кажете за тяхната видимост и живот?

Всичко е просто. Параметрите се създават, когато изпълнението влезе в метода (т.е. когато codeът на метода започне да се изпълнява). Те се елиминират, когато методът приключи. Те са видими в цялото тяло на метода.

Пример:

Код Променлива видимост
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е просто променлива, чийто тип е масив от низове. И Howто всички параметри, той е достъпен навсякъде в тялото на метода. Това каза, ние обикновено го игнорираме в нашите примери.



3. Променливи в клас

Ще си спомните от уроците в ниво 1, че един клас може да има методи и променливи. Методите понякога се наричат ​​методи на екземпляри, а променливите — променливи or полета на екземпляри. Това всъщност са синоними в Java.

Какви са променливите (or полетата) на клас?

Те са променливи, които са декларирани не в метод, а в клас.

Те могат да бъдат достъпни от всеки (нестатичен) метод на клас. Грубо казано, променливите на екземпляра са променливи, които се споделят от всички методи на клас.

Пример:

Код Променлива видимост
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

В този пример имаме два метода — add()и remove(). Методът add()увеличава променливите на екземпляра sumи count, а remove()методът намалява променливите sum и count. И двата метода работят върху променливи на споделен екземпляр.

Локалните променливи съществуват, докато се изпълнява метод. Променливите на екземпляра на клас съществуват в обект на клас, докато този обект съществува. Ще научите подробности за обекти от клас в следващото ниво.


4. Статични променливи

Подобно на методите, променливите в класа могат да бъдат статични or нестатични. Статичните методи имат достъп само до статични променливи.

В ниво 11 ще анализираме структурата на статичните променливи и методи и вие ще разберете причините за тези ограничения.

За да направите статична променлива (променлива на класа), трябва да напишете staticключовата дума в нейната декларация.

Статичните променливи не са обвързани с обект or екземпляр от класа, в който са декларирани. Вместо това те принадлежат към самия клас. Ето защо те съществуват, дори ако не е създаден нито един обект от класа . Можете да се обърнете към тях от други класове, като използвате конструкция като:

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 в него и ги обявихме за статични . Публичните статични променливи могат да бъдат достъпни от всеки метод в програма (и не само от метод).