5 - Unità didattica 2.4)
- Le variabili in Java
Nella programmazione tradizionale una variabile è una porzione di
memoria in cui è immagazzinato un certo tipo di dato. Per esempio un
intero in Java è immagazzinato in 32 bit. I tipi di Java saranno
comunque argomento del prossimo capitolo.
Anche per le variabili possiamo distinguere due fasi:
dichiarazione ed assegnazione.
- Dichiarazione di una variabile:
La sintassi per la dichiarazione di una variabile è la seguente:
[modificatori] tipo_di_dato nome_della_variabile;
· 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 del variabile:
identificatore della variabile.
Ecco una classe che definisce in maniera superficiale un quadrato
class Quadrato
{
public int altezza;
public int larghezza;
public final int numeroLati=4;
}
In questo caso abbiamo definito due variabili intere chiamate
altezza e
larghezza, ed una
costante numeroLati.
Infatti il modificatore final
rende una variabile costante nel suo valore. Potremmo anche
scrivere, ottenendo lo stesso risultato pratico:
class Quadrato
{
public int altezza, larghezza;
public final numeroLati=4;
}
In questo caso possiamo notare una maggiore compattezza del
codice ottenuta evitando le duplicazioni.
La dichiarazione di una variabile è molto importante. La
posizione della dichiarazione definisce lo scope, ovvero la
visibilità, ed il ciclo di vita della variabile stessa. In pratica
potremmo definire tre tipi diversi di variabili in base alla
posizione della loro dichiarazione:
- Variabili d’istanza:
Una variabile è detta d’istanza se è dichiarata in una classe, ma
al di fuori di un metodo. Le variabili definite nella classe
Quadrato sono tutte di
istanza.
Esse condividono il proprio ciclo di vita con l’oggetto (istanza)
cui appartengono: quando un oggetto della classe
Quadrato è istanziato,
viene allocato spazio per tutte le sue variabili d’istanza che
vengono inizializzate ai relativi valori nulli (una tabella
esplicativa è situata alla fine di questo modulo). Nel nostro caso,
le variabili altezza e larghezza saranno inizializzate a zero.
Ovviamente numeroLati è
una costante esplicitamente inizializzata a
4, ed il suo valore non
potrà cambiare. Una variabile di 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. Ciò implica che prima che il metodo
termini, una variabile locale deve essere esplicitamente
inizializzata per non ottenere un errore in compilazione. Infatti
non è possibile dichiarare una variabile, e quindi riservare spazio
in memoria per essa, e poi lasciare vuoto questo spazio. E’ bene
notare che l’inizializzazione di una variabile locale, deve essere
realizzata a livello del blocco di codice dove è definita la
variabile, e non ad un livello più interno.
- 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. Per esempio
nella seguente dichiarazione del metodo
somma vengono dichiarati
due parametri interi x
ed y:
public int somma(int x, int y)
{
return (x+y);
}
I parametri di un metodo saranno inizializzati, come abbiamo già
abbiamo potuto notare, al momento della chiamata del metodo.
Infatti, per chiamare il metodo
somma, dovremo passare i valori ai parametri per esempio nel
seguente modo:
int risultato=oggetto1.somma(5,6);
In particolare, all’interno del metodo
somma, la variabile
x varrà
5, mentre
y varrà
6. Dal momento che il
passaggio di parametri avviene sempre per valore, potremmo anche
scrivere:
int a=5, b=6;
int risultato=oggetto1.somma(a,b);
ed ottenere lo stesso risultato. È importante sottolineare, che
un parametro si può considerare anche una variabile locale del
metodo, avendo stessa visibilità e ciclo di vita.
N.B.: il concetto di variabile d’istanza si differenzia a tal
punto dai concetti di variabile locale, e di parametro, che il
compilatore accetta la dichiarazione in una classe, di una variabile
locale (o un parametro) e di una variabile d’istanza con lo stesso
identificatore. Quest’argomento sarà trattato in dettaglio nel
modulo 5.
Elenco delle pagine di "Il linguaggio Java: lez.3"
Introduzione al Modulo 3 - Pagina 1
Unità didattica 2.1) - Pagina 2
Unità didattica 2.2) - Pagina 3
Unità didattica 2.3) - Pagina 4
Unità didattica 2.4) - Pagina 5
Unità didattica 2.5) - Pagina 6
Unità didattica 2.6) - Pagina 7