1. Variabile locale

Să vorbim mai serios despre variabile. Dar de data aceasta nu vom discuta despre structura lor internă. În schimb, ne vom concentra asupra modului în care variabilele interacționează cu codul în care sunt localizate.

Toate variabilele care sunt declarate în cadrul metodelor sunt numite variabile locale . O variabilă locală există doar în blocul de cod în care este declarată. Sau, mai precis, el există din momentul în care este declarat și până la sfârșitul blocului de cod în care este declarat.

Pentru simplitate, să luăm în considerare un exemplu:

Cod Vizibilitate variabila
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

Să vorbim încă o dată despre accesarea variabilelor locale. Iată un bloc de cod format din acolade: acesta poate fi un corp de metodă, corpul unei bucle sau doar un bloc de cod pentru o instrucțiune condiționată. O variabilă declarată într-un bloc de cod există până la sfârșitul acelui bloc de cod.

Dacă o variabilă este declarată în corpul buclei, atunci ea va exista numai în corpul buclei. Este creat și distrus la fiecare iterație a buclei.

Nu puteți declara două variabile locale cu același nume într-o singură metodă - programul nu se va compila. Dar puteți face acest lucru dacă blocurile de cod în care sunt declarate variabilele nu se suprapun.

Exemplu:

Cod Vizibilitate variabila
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

Am putut declara o a doua variabilă locală numită b doar pentru că prima b variabilă nu este vizibilă în blocul de cod în care beste declarată a doua variabilă.


2. Parametri

După cum am spus mai înainte, fiecare metodă poate avea variabile pe care le numim parametri. Dar vizibilitatea și durata lor de viață?

Totul este simplu. Parametrii sunt creați atunci când execuția intră în metodă (adică când codul metodei începe să se execute). Ele sunt eliminate când metoda se termină. Ele sunt vizibile pe tot corpul metodei.

Exemplu:

Cod Vizibilitate variabila
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

După cum am spus mai devreme, argseste doar o variabilă al cărei tip este o matrice de șiruri. Și ca toți parametrii, este disponibil peste tot în corpul metodei. Acestea fiind spuse, de obicei îl ignorăm în exemplele noastre.



3. Variabile într-o clasă

Vă veți aminti din lecțiile de la nivelul 1 că o clasă poate avea metode și variabile. Metodele sunt uneori numite metode de instanță și variabile — variabile de instanță sau câmpuri. Acestea sunt de fapt sinonime în Java.

Care sunt variabilele (sau câmpurile) unei clase?

Sunt variabile care sunt declarate nu într-o metodă, ci într-o clasă.

Ele pot fi accesate din orice metodă (nestatică) a unei clase. În linii mari, variabilele de instanță sunt variabile care sunt partajate de toate metodele unei clase.

Exemplu:

Cod Vizibilitate variabila
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

În acest exemplu, avem două metode — add()și remove(). Metoda add()incrementează variabilele de instanță sumși count, iar remove()metoda scade variabilele sum și count. Ambele metode funcționează pe variabile de instanță partajată.

Variabilele locale există în timpul executării unei metode. Variabilele de instanță ale unei clase există în cadrul unui obiect al unei clase atâta timp cât acel obiect există. Veți afla detalii despre obiectele unei clase la nivelul următor.


4. Variabile statice

Ca și metodele, variabilele dintr-o clasă pot fi statice sau nestatice. Metodele statice pot accesa doar variabile statice.

La nivelul 11, vom analiza structura variabilelor și metodelor statice și veți înțelege motivele acestor restricții.

Pentru a face o variabilă statică (variabilă de clasă), trebuie să scrieți staticcuvântul cheie în declarația sa.

Variabilele statice nu sunt legate de un obiect sau instanță a clasei în care sunt declarate. În schimb, ei aparțin clasei în sine. De aceea ele există chiar dacă nu a fost creat niciun obiect al clasei . Vă puteți referi la ele din alte clase folosind un construct precum:

ClassName.variableName

Exemplu:

Cod Vizibilitate variabila
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

În exemplul de mai sus, am creat o Storageclasă separată, am mutat variabilele count și sum în ea și le-am declarat statice . Variabilele statice publice pot fi accesate din orice metodă dintr-un program (și nu numai dintr-o metodă).