12. Array

Array

Dato un tipo T, standard o definito dall’utente, l’array di T è definito come T[].

Gli array multidimensionali si dichiarano in maniera simile, T[][].

Dichiarazione ed inizializzazione degli array

Dichiarazione:

int[] ai1, ai2;
float[] af1;
double ad[];
Person[][] ap;

Inizializzazione:

int[] ai = {1, 2, 3};
double[][] ad = {{1.2, 2.5}, {1.0, 1.5}};

In assenza di inizializzazione, la dichiarazione di un array non alloca spazio per gli elementi dell’array.

L’allocazione può essere fatta dinamicamente con l’operatore new <type>[<size>]

int[] i = new int[10];
i = {10, 11, 12};
float[][] f = new float[10][10];
Persona[] p = new Persona[30];

Se gli elementi dell’array non sono di tipo primitivo, l’operatore new alloca SOLO lo spazio per i riferimenti agli oggetti.

Array di oggetti

Person[] person;
person = new Person[20];
person[0] = new Person();

La riga 1 definisce solo la variabile person, ma non alloca spazio.

La riga 2 allora 20 spazi per riferimenti ad un oggetto di tipo Person.

La riga 3 crea un oggetto di tipo Person e assegna il suo riferimento a person[0].

Iterazione negli array

int sum(int[] a) {
	int result = 0;
	for (int n : a) // Si legge "per ogni n in a" 
	result += n;
	return result;
}

Questo codice somma tutti gli elementi dell’array a.