Java/Array: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
fix gnomici e piccole correzioni; codice |
|||
Riga 34:
</source>
Questo è il
[[#Indici dell'array|Qui sotto]] il ciclo ''for'' viene esaminato e spiegato nel dettaglio.
=== Ciclo ''enhanced for'' ===
Un altro esempio è la scrittura a video di tutti gli elementi dell'array:
<source lang="Java">
Line 63 ⟶ 64:
</source>
Vale la pena di esaminare da vicino
*si vuole iterare lungo tutto l'array, dalla prima all'ultima cella. Come già osservato, la prima cella ha indice 0, mentre l'ultima ha indice <code>array.length - 1</code>.
*Quindi, l'indice del ciclo deve partire da 0, essere incrementata ogni volta di un'unità, e tutto questo finché non sarà raggiunto il valore massimo, che è <code>array.length - 1</code>;
Line 74 ⟶ 75:
... // istruzioni
</source>
Questo ciclo fa sì che le istruzioni che costituiscono il corpo del ''for'' vengono eseguite una volta in più rispetto a quanto avviene nel codice precedente, perché il corpo viene eseguito anche per <code>i = array.length</code>, cioè quando ''i'' rappresenta un indice che non ha una cella corrispondente nell'array. Un simile errore viene scoperto solo a ''run-time'', quando il programma genera una ArrayIndexOutOfBoundsException non prevista (vedere [[#ArrayIndexOutOfBoundsException|più giù]]).
== Altre info ==
; Inizializzazione delle celle dell'array
Si noti che, quando viene creato un array tramite ''new'', tutti gli ''slot'' vengono automaticamente inizializzati al valore di default del tipo corrispondente. Ad esempio, l'istruzione <code>new byte[1024]</code> crea un array di 1024 slot inizializzati al valore 0; oppure <code>new Object[1024]</code> crea un array di 1024 celle e assegna loro il valore ''null''.
; Lunghezza dell'array
Line 99 ⟶ 100:
Il tipo di un array creato con <code>new T[...]</code> è <code>T[]</code>. L'array può essere convertito verso qualunque tipo <code>S[]</code> dove <code>S</code> è un supertipo di <code>T</code>.
Questo significa che tutti gli array di oggetti (cioè gli array in cui il tipo <code>T</code> è una classe o interfaccia) possono essere convertiti verso <code>Object[]</code>. Inoltre, poiché tutti gli array sono oggetti, possono essere convertiti anche verso <code>Object</code>.
Infine, tutti gli array possono essere convertiti verso i tipi [http://download.oracle.com/javase/6/docs/api/java/lang/Cloneable.html java.lang.Cloneable] e [http://download.oracle.com/javase/6/docs/api/java/io/Serializable.html java.io.Serializable]. In particolare,
Line 132 ⟶ 133:
== Modi per creare un array ==
Consiste nella creazione tramite ''new'', indicando in qualche modo il numero di elementi che l'array dovrà contenere in memoria.<br/>
Esistono
<source lang="Java">
// Primo modo: con valori di default
int[] a1;
a1 = new int[7];
int[] a2 = new int[7]; // equivalente
// Secondo modo: indicando gli elementi dell'array
int[] b1;▼
▲ int[] b2 = new int[] { 0, 1, 0xAB, -15, Integer.MAX_VALUE, 5, 1 }; // equivalente
//
▲ int[] c1 = { 0, 1, 0xAB, -15, Integer.MAX_VALUE, 5, 1 };
▲ // c2 = { 0, 1, 0xAB, -15, Integer.MAX_VALUE, 5, 1 }; // non compila: è necessario indicare il nome del tipo
</source>
|