Java/Array: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m raggruppo note, edit minori |
mNessun oggetto della modifica |
||
Riga 6:
== Caratteristiche ==
''Si veda anche la [http://java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7 sezione 10.7] del capitolo 10 delle specifiche di linguaggio.''▼
Un array è un [[Java/Oggetti|oggetto]] dotato di un numero fisso di ''celle'' (in inglese, ''slot''), il tipo delle quali è chiamato ''component type'' dell'array. Esse si comportano esattamente come se fossero dei campi non <tt>final</tt>, con le seguenti differenze:
*invece che da un nome alfanumerico, ogni cella è identificata da un numero intero positivo, chiamato "indice";
*invece del punto, per indicare una cella si usa
Il numero esatto di celle viene specificato nella creazione dell'array, e
Un tipo dell'array è sempre un tipo riferimento, e si indica apponendo una coppia di parentesi quadre al ''component type''. Esempi:
Line 16 ⟶ 18:
*<tt>int[][]</tt> indica il tipo array il cui ''component type'' è <tt>int[]</tt>,<ref>In altre parole: indica il tipo di un array le cui celle referenziano degli array di int.</ref> quindi, in definitiva, indica il tipo <tt>array di array di int</tt>
Si noti che il tipo di un array non include '''mai''' il numero
; Celle▼
Ad esempio:▼
:<tt>System.out.println(i[0]);</tt> stampa a video il valore della prima cella dell'array referenziato dalla variabile <tt>i</tt>.▼
:<tt>i[0] = 5;</tt> assegna il valore intero <tt>5</tt> alla prima cella dell'array.▼
Più precisamente, l'accesso a una cella, in lettura o in scrittura, si identifica apponendo una coppia di parentesi quadre ad un'espressione il cui ''compile-time type'' sia un tipo array, e inserendo fra queste parentesi un'espressione il cui ''compile-time type'' sia convertibile verso il tipo <tt>int</tt> tramite [[Java/Tipi di dati#Conversioni|cast implicito]].<ref>Per maggiori informazioni, vedi {{cita libro|titolo=The Java Language Specification (Runtime Evaluation of Array Access)|url=http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#39346|accesso=8 settembre 2011}}</ref>▼
; Clonazione▼
Gli array esibiscono un metodo pubblico <tt>[http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#clone() clone()]</tt>.▼
== Creazione e distruzione ==
Line 76 ⟶ 90:
Questo significa che tutti gli array di oggetti possono essere convertiti verso <code>Object[]</code>.
▲''Si veda anche la [http://java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7 sezione 10.7] del capitolo 10 delle specifiche di linguaggio.''
▲; Celle
▲Le singole celle dell'array sono considerate come dei campi, e sono identificate da un indice numerico. L'indice della prima cella è sempre <tt>0</tt><ref>Si dice che gli indici sono <tt>0-based</tt>. In altri linguaggi, gli indici sono sempre <tt>1-based</tt> o possono essere scelti arbitrariamente.</ref> e, pertanto, l'indice dell'ultima cella è sempre <tt>n - 1</tt>, dove <tt>n</tt> è il numero di celle totali.
▲Ad esempio:
▲:<tt>System.out.println(i[0]);</tt> stampa a video il valore della prima cella dell'array referenziato dalla variabile <tt>i</tt>.
▲:<tt>i[0] = 5;</tt> assegna il valore intero <tt>5</tt> alla prima cella dell'array.
▲Più precisamente, l'accesso a una cella, in lettura o in scrittura, si identifica apponendo una coppia di parentesi quadre ad un'espressione il cui ''compile-time type'' sia un tipo array, e inserendo fra queste parentesi un'espressione il cui ''compile-time type'' sia convertibile verso il tipo <tt>int</tt> tramite [[Java/Tipi di dati#Conversioni|cast implicito]].<ref>Per maggiori informazioni, vedi {{cita libro|titolo=The Java Language Specification (Runtime Evaluation of Array Access)|url=http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#39346|accesso=8 settembre 2011}}</ref>
▲; Clonazione
▲Gli array esibiscono un metodo pubblico <tt>[http://download.oracle.com/javase/6/docs/api/java/lang/Object.html#clone() clone()]</tt>.
== ArrayIndexOutOfBoundsException ==
Line 124 ⟶ 120:
... // istruzioni
</source>
Questo ciclo fa sì che le istruzioni che costituiscono il corpo del ''for'' siano eseguite una volta in più: nell'ultima iterazione, <tt>i</tt> è pari al valore di <tt>array.length</tt>, ovvero un indice fuori dai limiti dell'array (
=== For each ===
|