giovedì 4 aprile 2013

Le variabili

Le variabili in JAVA

La sintassi per la dichiarazione di una variabile è la seguente:
[modificatori] tipo_di_dato nome_della_variabile [ = inizializzazione];
dove:
modificatori: parole chiavi di Java che possono essere usate per modificare in
qualche modo le funzionalità e le caratteristiche della variabile.
tipo di dato: il tipo di dato della variabile.
nome della variabile: identificatore della variabile.
inizializzazione: valore di default con cui è possibile valorizzare una variabile.
Variabili d’istanza
Una variabile è detta d’istanza se è dichiarata in una classe, ma al di fuori di un metodo. Esse condividono il proprio ciclo di vita con l’oggetto (istanza) cui appartengono. Sono inizializzate a NULL se non esplicitamente inizializzate.
Una variabile d’istanza smetterà di esistere quando smetterà di esistere l’oggetto a cui appartiene.
Variabili locali
Una variabile è detta locale (o di stack, o automatica, o anche temporanea) se è dichiarata all’interno di un metodo. Essa smetterà di esistere quando terminerà il metodo. Una variabile di questo tipo, a differenza di una variabile di istanza, non sarà inizializzata ad un valore nullo al momento dell’istanza dell’oggetto a cui appartiene.
Parametri formali
Le variabili dichiarate all’interno delle parentesi tonde che si trovano alla destra dell’identificatore nella dichiarazione di un metodo, sono dette parametri o argomenti del metodo.Un parametro si può considerare anche una variabile locale del metodo, avendo stessa visibilità e ciclo di vita. Le differenze sussistono solo nella posizione della dichiarazione, non nel processo di immagazzinamento in memoria.

Possiamo dichiarare più variabili dello stesso tipo in un'unica istruzione, con la libertà di inizializzarle o no:

             int a=1, b = 0;
             int a,b=0;
             int a,b;


E’ possibile assegnare in una stessa classe ad una variabile locale (o un parametro) e ad una variabile d’istanza lo stesso identificatore.
Dato il codice :
public class Main {
String nome;
int numero;
       public static void main(String[] args) {
             Main classe = new Main();
             System.out.println(classe.nome);
       }     
       int metodo (){
             int i;
             return i;
       }     
       int metodo2(int x, int y)
       {
       return (x + y);
       }     
       void metodo3 (){
             public int i;
             protected int j;
             private int k;
       }
       void metodo4 (){
             int numero;
       }
}
La variabile String nome è di istanza, infatti se si prova a stamparla dopo aver dichiarato un oggetto classe di tipo Main verrà stampata a null .
Il metodo metodo ()non compila; il motivo è che la variabile locale i non è stata inizializzata. A differenza di una variabile di istanza non viene inzializzata in automatico, il compilatore se ne accorge e ci segnala l'errore :  The local variable i may not have been initialized

Nel metodo due x e y sono parametri formali. Se avessimo scritto:
int metodo2(int x=0, int y=0)
il metodo non avrebbe compilato :

Multiple markers at this line
- Syntax error on tokens, delete these tokens
- Syntax error on tokens, delete these tokens

Infatti non ha senso inzializzare i parametri formali perchè arrivano dalla chiamata del metodo.
Il metodo3 mostra come non abbia senso utilizzare i modificatori sulle variabili locali, perchè tanto nascono e muoiono all'interno del metodo. L'unico modificatore ammesso è final.
Infine nell'ultimo metodo4 si vede come si possa chiamare una varibile locale ( numero ) come una variabile di istanza. La gestione della memoria di JAVA fa in modo che non ci siano fraintendimenti.

Nessun commento:

Posta un commento