Abbiamo visto, nel corso delle precedenti lezioni, come le variabili siano
elementi indispensabili di un qualsiasi programma, e questo non
vale solo in Java.
Finora ne abbiamo usato un ristretto numero per memorizzare poche
informazioni, ma via via che andiamo a creare progetti di dimensioni
maggiori cresce l’esigenza di strutturare i dati in nostro
possesso in maniera più sistematica ed efficiente.
Supponiamo di dover creare un semplice programma che aiuti il
custode di un garage a gestire tutte le automobili che entrano
ed escono: il primo problema che ci potremmo porre è quante variabili
di tipo “Automobile” istanziare per aiutare il nostro
amico custode.
Certamente il garage ha un numero massimo di posti e non può ospitare
più automobili di quelle che è fisicamente in grado di contenere,
per cui potremmo pensare di dichiarare tante variabili quanti
sono i posti disponibili.
A questo punto, secondo quanto abbiamo appreso finora, potremmo
creare una classe chiamata “Garage”, che al suo interno
dichiara una lista più o meno lunga di variabili di tipo “Automobile”.
Se siamo fortunati il nostro amico ha in gestione una struttura
piccola, ma se avessimo a che fare con un “MegaGarage”
da 1000 posti macchina ci sentiremmo perduti!
Per venirci incontro in queste terribili situazioni, Java ci offre
un modo di strutturare le nostre variabili veramente efficiente
e semplice da usare: gli array.
Gli array non sono una novità di Java: chi ha già lavorato con
altri linguaggi ad alto livello ha avuto modo di conoscerne la
potenza e la versatilità.
Gli array memorizzano un elenco di elementi tutti dello
stesso tipo primitivo o della stessa classe, e ciascun elemento
ha una propria posizione numerata che consente di accedere facilmente
ad esso.
Un array può contenere qualsiasi tipo di informazione che possa
essere registrata in una variabile, ma una volta creato vi si
possono memorizzare solo dati di quel tipo: si può creare un array
di numeri interi o un array di stringhe, ma non si può avere un
array che contenga sia interi che stringhe.
Per lavorare con gli array si utilizza l’operatore [ ] visto
nella lezione 23.
Per dichiarare un array si deve indicare il tipo di oggetti che
l’array memorizza e il nome dell’array stesso, secondo
una delle due sintassi seguenti:
nomeTipo[] nomeVariabile;
nomeTipo nomeVariabile[];
Ciò significa che se dobbiamo creare un array di oggetti di tipo
Automobile possiamo usare indifferentemente una delle due dichiarazioni:
Automobile[] autoClienti;
Automobile autoClienti[];
Poiché esiste discordanza di pareri su quale sia la soluzione
più leggibile, ogni programmatore può utilizzare lo stile che
ritiene più opportuno.
Una volta dichiarata una variabile array, occorre creare l’oggetto
corrispondente e assegnarlo alla variabile; per fare ciò si procede
in uno dei due modi seguenti:
utilizzando l’operatore new;
inizializzando direttamente il contenuto dell’array.
Nel primo caso occorre indicare il numero di posizioni contenute
nell’array, ad es. l’istruzione:
Automobile[] autoClienti = new Automobile[1000];
crea un array di 1000 oggetti di tipo “Automobile”
(si faccia attenzione che questa istruzione non inserisce ancora
gli oggetti nelle relative posizioni, ma occorre esplicitamente
creare tali oggetti e inserirli nell’array in una fase successiva
– come vedremo nella prossima lezione).
Nel secondo caso si può creare e riempire allo stesso tempo un
array, elencandone direttamente gli elementi, separati da virgole
e racchiusi tra parentesi graffe:
String[] amici = {"Tizio",
"Caio", "Sempronio"};
Tutti gli elementi all’interno delle graffe devono essere
del tipo dichiarato per l’array.
Creare un array in questo modo vuol dire assegnargli una dimensione
pari al numero di elementi inclusi nell’elenco: nell’esempio
abbiamo creato un array di dimensione 3.
Dopo aver impostato i valori iniziali di un array, è possibile
accedere ai valori in ogni posizione utilizzando il nome dell’array,
seguito da un indice intero racchiuso tra parentesi quadre.
Il valore dell’indice può essere:
un numero intero;
il risultato di un’espressione;
il valore ritornato da un metodo.
Le posizioni sono inoltre numerate a partire da 0 fino alla dimensione
dell’array meno 1.
Come prima prova, compilate ed eseguite il seguente programma:
class ProvaArray {
public static void main (String arg[]) {
String[] amici = {"Tizio", "Caio", "Sempronio"};
for (int i = 0; i < amici.length; i++)
System.out.println(amici[i]);
}
}
}
Alla prossima!
Torna all'indice Generale del corso di Corso di Java di Software Planet