1. Variabili locali

Facciamo un discorso più serio sulle variabili. Ma questa volta non parleremo della loro struttura interna. Invece, ci concentreremo su come le variabili interagiscono con il codice in cui si trovano.

Tutte le variabili dichiarate all'interno dei metodi sono chiamate variabili locali . Una variabile locale esiste solo nel blocco di codice in cui è dichiarata. O, per essere più precisi, esiste dal momento in cui viene dichiarato fino alla fine del blocco di codice in cui viene dichiarato.

Per semplicità consideriamo un esempio:

Codice Visibilità variabile
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

Parliamo ancora una volta dell'accesso alle variabili locali. Ecco un blocco di codice costituito da parentesi graffe: questo potrebbe essere il corpo di un metodo, il corpo di un ciclo o solo un blocco di codice per un'istruzione condizionale. Una variabile dichiarata in un blocco di codice esiste fino alla fine di quel blocco di codice.

Se una variabile viene dichiarata nel corpo del ciclo, esisterà solo nel corpo del ciclo. Viene creato e distrutto ad ogni iterazione del ciclo.

Non puoi dichiarare due variabili locali con lo stesso nome in un metodo: il programma non verrà compilato. Ma puoi farlo se i blocchi di codice in cui sono dichiarate le variabili non si sovrappongono.

Esempio:

Codice Visibilità variabile
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

Siamo stati in grado di dichiarare una seconda variabile locale denominata b solo perché la prima b variabile non è visibile nel blocco di codice in cui bè dichiarata la seconda variabile.


2. Parametri

Come abbiamo detto prima, ogni metodo può avere variabili che chiamiamo parametri. E la loro visibilità e durata?

È tutto semplice. I parametri vengono creati quando l'esecuzione entra nel metodo (cioè quando inizia l'esecuzione del codice del metodo). Vengono eliminati al termine del metodo. Sono visibili in tutto il corpo del metodo.

Esempio:

Codice Visibilità variabile
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

Come abbiamo detto prima, argsè solo una variabile il cui tipo è un array di stringhe. E come tutti i parametri, è disponibile ovunque all'interno del corpo del metodo. Detto questo, di solito lo ignoriamo nei nostri esempi.



3. Variabili in una classe

Ricorderai dalle lezioni del Livello 1 che una classe può avere metodi e variabili. I metodi sono talvolta chiamati metodi di istanza e variabili - variabili di istanza o campi. Questi sono in realtà sinonimi in Java.

Quali sono le variabili (o campi) di una classe?

Sono variabili dichiarate non in un metodo, ma in una classe.

È possibile accedervi da qualsiasi metodo (non statico) di una classe. In parole povere, le variabili di istanza sono variabili condivise da tutti i metodi di una classe.

Esempio:

Codice Visibilità variabile
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

In questo esempio, abbiamo due metodi — add()e remove(). Il add()metodo incrementa le variabili di istanza sume counte il remove()metodo diminuisce le variabili sum e count. Entrambi i metodi funzionano su variabili di istanza condivise.

Le variabili locali esistono durante l'esecuzione di un metodo. Le variabili di istanza di una classe esistono all'interno di un oggetto di una classe finché tale oggetto esiste. Imparerai i dettagli sugli oggetti di una classe nel livello successivo.


4. Variabili statiche

Come i metodi, le variabili in una classe possono essere statiche o non statiche. I metodi statici possono accedere solo a variabili statiche.

Nel Livello 11 analizzeremo la struttura delle variabili statiche e dei metodi e capirete le ragioni di queste restrizioni.

Per creare una variabile statica (variabile di classe), devi scrivere la staticparola chiave nella sua dichiarazione.

Le variabili statiche non sono associate a un oggetto oa un'istanza della classe in cui sono dichiarate. Appartengono invece alla classe stessa. Ecco perché esistono anche se non è stato creato un solo oggetto della classe . Puoi fare riferimento a loro da altre classi usando un costrutto come:

ClassName.variableName

Esempio:

Codice Visibilità variabile
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

Nell'esempio sopra, abbiamo creato una Storageclasse separata, abbiamo spostato le variabili count e sum al suo interno e le abbiamo dichiarate static . È possibile accedere alle variabili statiche pubbliche da qualsiasi metodo in un programma (e non solo da un metodo).