Tanti dati in fila
Un array raccoglie tanti valori dello stesso tipo sotto un solo nome. Ha dimensione fissa, decisa alla creazione, e si accede agli elementi con un indice che parte da 0.
int[] numeri = new int[5]; // 5 caselle: indici 0..4 numeri[0] = 10; // prima casella numeri[4] = 50; // ultima casella System.out.println(numeri.length); // 5
Il ciclo for-each
Per leggere tutti gli elementi senza usare l'indice c'e' il for-each: “per ogni elemento x dentro l'array, fai...”.
for classico
for-each
Algoritmi fondamentali: somma, media, ricerca del massimo/minimo, conteggio. Sono sempre un ciclo che attraversa l'array tenendo un “accumulatore”.
La copia profonda
Un array e' un oggetto: la variabile contiene un riferimento, non i dati. Quindi int[] b = a; non copia l'array, fa puntare b allo stesso array di a. Per una copia vera (profonda) bisogna creare un nuovo array e copiare elemento per elemento.
// copia SBAGLIATA: stesso array int[] b = a; // modificare b cambia anche a! // copia PROFONDA: array nuovo e indipendente int[] c = new int[a.length]; for (int i = 0; i < a.length; i++) c[i] = a[i];
Liste che crescono
L'ArrayList e' come un array ma dinamico: cresce e si riduce da solo con add e remove. Si indica il tipo degli elementi tra parentesi angolari.
import java.util.ArrayList; ArrayList<String> nomi = new ArrayList<>(); nomi.add("Anna"); nomi.add("Bruno"); System.out.println(nomi.size()); // 2 for (String n : nomi) System.out.println(n);
Un membro static appartiene alla classe, non al singolo oggetto: e' condiviso da tutti. Tipico uso: un contatore di quanti oggetti sono stati creati.
Esercizi su array, ArrayList e static ↓