Sei sulla pagina 1di 4

Array in Java

Introduzione
Obiettivo di questa dispensa mostrare quali sono gli strumenti offerti dal linguaggio Java per creare e manipolare array.

Array in Java
Un array una struttura che contiene dati dello stesso tipo base. Lutilizzo di array in Java prevede che siano svolte, nellordine, due importanti operazioni: la dichiarazione e la creazione. La dichiarazione di una variabile di tipo array ha la seguente sintassi: tipo_base[] id_variabile; Esempi int[] a; double[] b; String[] c;

dichiara una variabile array di nome a il cui tipo base int dichiara una variabile array di nome b il cui tipo base double dichiara una variabile array di nome c il cui tipo base String

La creazione dellarray dichiarato avviene mediante la seguente sintassi: id_variabile = new tipo_base [dim]; dove new uno speciale operatore di Java, il cui significato sar spiegato tra poco, e dim un intero che indica la dimensione dellarray. Esempi a=new int[10]; b=new double[6]; c=new String[2]; Sintassi abbreviata tipo_base[] id_variabile = new tipo_base [dim]; Esempi int[] a=new int[10]; double[] b=new double[6]; String[] c=new String[2]; Sintassi alternativa Le parentesi quadrate possono essere spostate dopo il nome dellarray. Questa sintassi scarsamente usata. Esempi int a[]=new int[10]; double b[]=new double[6]; String c[]=new String[2]; crea un array che pu contenere 10 interi crea un array che pu contenere 6 double crea un array che pu contenere 2 stringhe

Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/11

Confronti con i dati primitivi


Le domande che potete porvi sono: - Come mai per usare una variabile array non basta dichiararla, come avviene invece per le variabili di tipo primitivo, ma necessario anche crearla esplicitamente? - Che differenza esiste tra dichiarazione e creazione? La dichiarazione di una variabile di tipo primitivo, per esempio int x; indica che, in fase di esecuzione, avremo bisogno di uno spazio in memoria dove conservare il valore di tale variabile e che lo spazio di memoria richiesto di 32 bit. La dichiarazione di una variabile array, per esempio int[] x; indica che, in fase di esecuzione, avremo bisogno di uno spazio in memoria dove conservare il riferimento allarray che andremo a creare successivamente. Pertanto x non contiene un valore, bens un indirizzo di memoria. Le variabili che contengono indirizzi di memoria vengono dette, in Java, variabili reference (riferimento) e lo spazio occupato dipende dalla piattaforma in uso. In altri linguaggi di programmazione, le variabili destinate a contenere indirizzi, sono dette tipicamente puntatori. Entrambi i termini sono giustificati dal fatto che la variabile reference fa riferimento o punta alla struttura contenente effettivamente i valori. Per default, il valore iniziale di una variabile reference NULL, intendendo con questo che la variabile punta a nulla.

x:

NULL

Loperatore new
La creazione della struttura array, contenente i valori del tipo base, avviene utilizzando loperatore new. Volendo creare larray x (ossia puntato da x) di interi, dichiarato in precedenza, e supponendo che la sua dimensione sia 5, dobbiamo scrivere: x= new int[5]; Solo dopo lesecuzione di questa istruzione avremo effettivamente a disposizione larray. Il valore di x non pi NULL ma coincide con lindirizzo di memoria del primo elemento dellarray.

Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/11

x:

indici

Osservazioni

1. Spesso, al posto della costante esplicita che indica la dimensione dellarray, si


usa una costante simbolica, che sar per ovvi motivi di tipo intero: final int DIM= 5; int[] x= new int[DIM]; Una volta fissata la dimensione di un array, non pi possibile modificarla in fase di esecuzione. Per questo motivo si dice che gli array sono strutture di memoria statiche, intendendo con questo che la dimensione fissata non pu pi variare.

2. Un array mantiene al suo interno linformazione della sua dimensione. Per


richiamare questa informazione si fa seguire al nome dellarray un punto e la parola length. Per esempio: x.length restituisce il valore 5. intero, con la differenza che non ha un nome proprio. Per riferirci ad uno di questi elementi occorre scrivere il nome dellarray seguito, tra parentesi quadrate, dallindice che ne indica la posizione occupata nella struttura. Per esempio, per accedere al primo elemento (indice 0) si scrive x[0]; per accedere al secondo elemento si scrive x[1] e cos via. In generale, la notazione usata per accedere allelemento di indice i (i=0,1,2,DIM) : x[i] 4. Gli indici di un array in Java partono sempre da zero e vanno fino a DIM-1.

3. Ogni elemento dellarray x si comporta esattamente come una variabile di tipo

Inizializzazione di un array
Linizializzazione di un array (detta anche valorizzazione) consiste nellassegnare a ciascun elemento dellarray un valore iniziale. L operazione indispensabile per poter lavorare con variabili di questo tipo, cos come necessario assegnare un valore iniziale ad ogni variabile di tipo primitivo, prima di poterla utilizzare. Se larray contiene pochi elementi (come nel nostro esempio) possiamo assegnare direttamente ad ogni elemento il corrispondente valore. Per esempio, per inizializzare larray come indicato in figura

Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/11

x:

100 0

50 1

81 2

23 3

7 4

indici

scriveremo: x[0]= x[1]= x[2]= x[3]= x[4]= 100; 50; 81; 23; 7;

Una notazione alternativa, utilizzabile quando i valori dellarray siano noti in partenza e non debbano essere acquisiti in input, consiste nel valorizzare larray in fase di dichiarazione: int[] x= {100, 50, 81, 23, 7}; Osservate che, in questo caso, non pi necessario creare larray con loperatore new. Se non necessario mantenere il riferimento allarray in una variabile, si pu definire un array anonimo con la seguente sintassi: new int[] {100, 50, 81, 23, 7}; Osservazione Le soluzioni presentate sono valide solo se la dimensione dellarray limitata. Infatti, immaginate quali potrebbero essere le difficolt se larray da inizializzare contenesse un numero elevato di elementi (es. superiore a 100). Nel seguito vedremo come sia possibile risolvere questo problema attraverso luso di cicli con contatore.

Quest'opera stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ o spedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/11