E’ possibile avere una lista di valori associati ad una variabile. Una variabile cosi composta si chiama Array. Un array (anche detto vettore) è un gruppo di elementi che viene dichiarato inizialmente specificandone la dimensione. La sintassi per la dichiarazione di una variabile di tipo array è la seguente:
TipoArray[] nome = new TipoArray [n];
o anche:
TipoArray nome[]= new TipoArray [n];
TipoArray può essere sia un tipo primitivo che una classe. “n” indica che l’array può contenere fino ad un massimo di n elementi di tipo TipoArray.
Una volta creato l’array, possiamo accedere ai singoli elementi indicandone la posizione (detta indice), grazie all’operatore ‘[]‘ (parentesi quadre)
Esempio:
int x[] = new int[10];
x è un array che può contenere al massimo 10 interi. Per accedere alla singola posizione si usa la seguente forma sintattica:
x[0] = 10; x[1] = 20;
Gli elementi sono numerati a partire da zero, quindi nome[0] farà riferimento al primo elemento, nome[1] al secondo e così via fino all’ultimo indicato da nome[lunghezza-1].
Esiste anche un’altra sintassi per allocare ed inizializzare gli array in un’unica riga: i valori degli elementi dell’array possono essere elencati in una lista racchiusa tra parentesi graffe e separati da virgole.
Esempio:
int [] numeroGiorniPerMese = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Tutti i valori della lista devono essere del tipo specificato per l’array.
Se si tenta di accedere ad elementi esterni alla lunghezza dell’array, viene lanciata un’eccezione.
Esempio:
int l = 5; int [] a = new int[l]; a[9] = 10;
Questo codice, quando viene eseguito, lancia lancia una eccezione del tipo ArrayIndexOutOfBoundsException.
Array Multidimensionali
Un array multidimensionale è un array i cui elementi sono a loro volta array.
La dichiarazione di un array multidimensionale è del tutto analoga a quella di un array monodimensionale, con la differenza che bisogna riportare tante coppie di parentesi quadre quante sono le dimensioni dell’array.
Esempio array bidimensionale (anche detto matrice):
int[][] matrix = new int[4][5]; //equivalentemente: int[][] matrix; matrix = new int[4][5];
Per popolare una matrice sono sufficienti due for annidati, uno per le righe e l’altro colonne:
Esempio
double[][] matrix = new double[4][7]; for(int i=0; i<matrix.length; i++) { for(int j=0; j<matrix[i].length; j++) { matrix[i][j] = Math.random(); } }
Oppure si può inizializzare direttamente:
Esempio:
int[][] mat = {{5, 3, 6, 12}, {1, 3, 3, 2}, {0, 0, 3, 14}};