back to top

Le variabili in Java

Iniziamo con definire il concetto di variabile. Una variabile non è altro che una locazione di memoria nel quale viene salvato un determinato dato. Il nome con cui viene identificata una variabile, per esempio la variabile "numeroX degli esempi precedenti, rappresenta l’indirizzo fisico in memoria in quella locazione.

Non tutte le variabile però sono uguali, infatti a seconda del punto di codice in cui viene definita una variabile questa assumerà un preciso significato. Legato a ciò possiamo collegare il concetto di scope di una variabile o visibilità. Prima di tutto una variabile, per essere utilizzata per svolgere qualche operazione deve essere prima dichiarata e poi inizializzata. Per la dichiarazione si fa riferimento al seguente codice:

int x;
che ha lo scopo di allocare in memoria una variabile referenziata dal nome "x" che in memoria occuperà, in bit, la dimensione di un int. Di fatto però all’interno della variabile "x" non viene immagazzinato nessun valore, diciamo che la dichiarazione è quel processo che permette di allocare in memoria spazio sufficiante per poi inizializzare "x" con un numero intero. La fase di inizializzazione viene effettuata nel seguente codice:
x=10;
In questo modo si va a scrivere il valore 10 all’interno della cella di memoria riferenziata da "x".

Iniziamo con il dire che in Java sono presenti tre tipi di variabili: variabili di istanza, variabili locali e parametri formali. Andiamo adesso ad analizzarli singolarmente fornendo qualche esempio per chiarire meglio i concetti.

Variabili di istanza

Le variabili di istanza sono quelle variabile che sono definite all’interno di una classe, ma fuori dai metodi della classe stessa. Le variabili di istanza erano state denominate, all’inizio della trattazione, come gli attributi della classe.

public class Numeri {
  public int numeroX;
  public int numeroY;  
}
le variabili "numeroX" e "numeroY" sono dunque delle variabili di istanza. Le variabili di istanza verranno deallocate dalla memoria non appena l’oggetto, istanza della classe, non terminerà di esistere per esempio non appena il flusso dell’applicazione è terminato. Spesso alcune variabili di istanza vengono definite come costanti ovvero sono variabili il quale valore rimarrà costante (non potrà essere modificato). Per definire una costante si usa la sintassi seguente:
public final int NUMEROZ = 10; //dichiaro una costante pari a 10

Variabili locali

Le variabili locali sono tutte quelle variabili che vengono dichiarate ed utilizzate all’interno dei metodi di una classe. Riprendendo spunto dal codice scritto nelle lezioni successive:

public int sottrazione (int x, int y) {
  int sottrazione;
  sottrazione=x-y;   
  return sottrazione;    
}
la variabile "sottrazione" sarà dunque una variabile locale. E’ importante specificare che la visibilità delle variabili locali è relativa al metodo nella quale viene dichiarata. Per esempio se scrivessi un’altro metodo all’interno della classe e facessi riferimento alla variabile "sottrazione" riceverei un messaggio di errore del compilatore che richiede di dichiare la variabile perchè, per quel metodo, di fatto non esiste. Una variabile locale viene deallocata non appena il metodo effettua il return e quindi ritorna al metodo principale main della classe.

Parametri formali

Sono quelle variabili che vengno dichiarate all’interno delle parentesi tonde di un determinato metodo. Sempre prendendo spunto dal codice precedentemente scritto:

public int sottrazione (int x, int y)
le variabili "x" ed "y" sono parametri formali. Con la dichiarazione soprastante le variabili "x" e "y" di fatto sono state solo dichiarate e quindi non contengono nessun valore. L’inizializzazione della variabile avverrà non appena verrà richiamato il metodo sottrazione e verranno passati tra parentesi i due numeri su i quali effettuare la somma. Leggendo attentamente il blocco di codice relativo al metodo sottrazione possiamo vedere che le variabili "x" "y" e "sottrazione" vengono usate nello stesso modo. Quindi potrebbe sorgere spontanea la domanda: che differenza concreta si ha tra un parametro formale e una variabile locale? All’atto pratico non c’è nessuna differenza, ma possiamo dire che un parametro formale è una sottocategoria delle variabili locali. Dato che appartengono alla famiglia delle variabili locali i parametri formali avranno ovviamente identica visibilità e verranno deallocati non appena il metodo effettua il return.

Pubblicitร 
Articolo precedente
Articolo successivo