In Java, gli array sono un modo per memorizzare più valori dello stesso tipo in un'unica struttura. A differenza di altre strutture dati, gli array hanno una dimensione fissa una volta creati. Gli elementi possono essere assegnati a un array o recuperati da esso tramite un indice. Gli array in Java usano l'indicizzazione a partire da zero: l'indice del primo elemento è 0, quello del secondo è 1 e così via.
Ecco la sintassi standard per inizializzare un array:
type[] variableName = new type[size];
Il type è il tipo degli elementi dell'array, che può essere un tipo primitivo (ad esempio int) o una classe (ad esempio String).
Il size è il numero di elementi che l'array conterrà (e non può essere cambiato in seguito).
Dopo la creazione dell'array, gli elementi vengono inizializzati ai loro valori predefiniti (tipicamente 0, false o null).
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
Gli array possono anche essere definiti usando una notazione abbreviata che permette sia di creare l'array sia di impostarne i valori:
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
Dato che ora il compilatore riesce a capire quanti elementi avrà l'array, si può omettere la lunghezza.
Gli elementi di un array possono essere assegnati e letti usando una notazione con l'indice tra parentesi quadre:
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
Accedere a un indice al di fuori degli indici validi dell'array provoca un'IndexOutOfBoundsException.
Gli array si possono manipolare chiamando i metodi o le proprietà di un'istanza di array, oppure usando i metodi statici definiti nella classe Arrays (di solito usati solo nel codice generico).
La proprietà length contiene la lunghezza di un array.
È possibile accedervi in questo modo:
int arrayLength = someArray.length;
Java fornisce anche un'utile classe di utilità, java.util.Arrays, che ha molti metodi utili per gli array (ad esempio Arrays.equals).
Java supporta anche gli array multidimensionali, come int[][] arr = new int[3][4];, che possono essere molto utili.
Il fatto che un array sia anche una collezione significa che, oltre ad accedere ai valori tramite indice, puoi iterare su tutti i suoi valori usando un ciclo for-each:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
Se vuoi avere più controllo su quali valori iterare, puoi usare un ciclo for:
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei