W3docs

Come Ottenere la Lunghezza di un Array in Java

Ottieni la lunghezza di un array Java con il campo .length, anche per array multidimensionali.

Un array Java memorizza la propria dimensione in modo permanente, e puoi leggerla tramite il campo length. Questa è una delle operazioni più comuni che eseguirai con gli array — per scorrerli in un ciclo, trovare l'ultimo elemento, o verificare se contengono dati. Questo capitolo mostra come funziona length, in cosa differisce da String.length(), e come misurare gli array multidimensionali.

Usare il campo length

Ogni array in Java espone un campo public final int length che contiene il numero di elementi. Lo si legge senza parentesi, perché è un campo, non un metodo.

int[] scores = {88, 92, 75, 60, 100};
int size = scores.length;          // 5
System.out.println(scores.length); // 5

Il valore è fisso al momento della creazione dell'array e non cambia mai — gli array in Java non crescono né si riducono. Se hai bisogno di una collezione ridimensionabile, usa ArrayList, che espone size() come metodo. Il campo length funziona allo stesso modo per array di qualsiasi tipo: String[], double[], o anche un array di oggetti.

Campo vs. metodo: length vs. length()

Una fonte frequente di confusione è mescolare array e stringhe. Un array usa il campo length; una String usa il metodo length(). Scrivere quello sbagliato non compilerà.

int[] numbers = {1, 2, 3};
String text = "hello";

System.out.println(numbers.length);   // field, no ()  -> 3
System.out.println(text.length());    // method, with () -> 5
TipoCome ottenere la dimensioneParentesi?
Array (int[], String[], ...)array.lengthNo
Stringstr.length()
ArrayList, HashMap, ...collection.size()

Una regola semplice: gli array sono gli unici dei tre che usano un campo diretto. Tutto il resto usa una chiamata a metodo.

Gestire i casi di array vuoto e ultimo elemento

Un array creato con dimensione 0 è un oggetto reale e non-null il cui length è 0. Questo è diverso da un riferimento null, che non ha lunghezza — leggere .length su null lancia NullPointerException. Per usare la dimensione in modo sicuro, itera da 0 fino a length - 1, poiché l'ultimo indice valido è sempre uno in meno della lunghezza.

int[] empty = new int[0];
System.out.println(empty.length);          // 0, not an error

int[] data = {10, 20, 30};
int last = data[data.length - 1];          // 30
for (int i = 0; i < data.length; i++) {
    System.out.println(data[i]);
}

Se un array potrebbe essere null, proteggiti prima: if (data != null && data.length > 0).

Misurare gli array multidimensionali

Un array bidimensionale in Java è in realtà un array di array. Il length esterno fornisce il numero di righe, e ogni riga ha il proprio length per il numero di colonne di quella riga. Le righe possono anche avere lunghezze diverse (un array irregolare), quindi leggi sempre la lunghezza di ogni riga individualmente invece di assumere una larghezza uniforme.

int[][] grid = {
    {1, 2, 3},
    {4, 5},
    {6, 7, 8, 9}
};
System.out.println(grid.length);     // 3 rows
System.out.println(grid[0].length);  // 3 columns in row 0
System.out.println(grid[2].length);  // 4 columns in row 2

Per contare tutti gli elementi, somma la lunghezza di ogni riga invece di moltiplicare righe per colonne — questa scorciatoia funziona solo per griglie perfettamente rettangolari.

Esempio pratico

Il programma qui sotto riunisce tutte queste idee: un array monodimensionale, la distinzione campo-vs-metodo, un array vuoto, l'accesso all'ultimo elemento, e un array 2D irregolare la cui dimensione totale viene calcolata sommando le lunghezze delle righe.

java— editable, runs on the server

Cosa ricavare dall'esecuzione:

  • scores.length = 5 conferma che length si legge come campo diretto senza parentesi e restituisce il numero di elementi.
  • word.length() = 5 mostra che la dimensione di una String proviene dal metodo length(), un meccanismo diverso dal campo degli array.
  • empty.length = 0 dimostra che un array di lunghezza zero è un oggetto valido, non null, e leggere la sua lunghezza è sicuro.
  • last element = 100 dimostra che l'indice finale è length - 1, poiché l'indicizzazione parte da 0.
  • grid.length (rows) = 3 mentre grid[2].length è 4, mostrando che la lunghezza esterna conta le righe e ogni riga porta la propria lunghezza — sommata a total elements in grid = 9.

Esercitazione

Pratica
In Java, come si ottiene correttamente il numero di elementi in un array int chiamato 'data'?
In Java, come si ottiene correttamente il numero di elementi in un array int chiamato 'data'?
Was this page helpful?