Corso di Java

Array

 

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