1. Array in memoria
Negli esempi precedenti, le illustrazioni erano un po' imprecise.
Quando si creano array (come quando si creano stringhe), vengono allocati due blocchi di memoria separati: uno per memorizzare l' array (contenitore) stesso e un secondo blocco per la variabile che memorizza il suo indirizzo . L'immagine qui sotto rappresenta questo chiarimento:

La memoria allocata per l'array di 10 intelementi e la int[]variabile che memorizza l' indirizzo dell'array intè mostrata in verde.
Per confronto, una normale intvariabile che memorizza il valore 199è mostrata in blu.
Questo ricorda un po' l'immagazzinamento di stringhe in memoria, non credi?
Esatto, stringhe. E proprio come quando lavori con le stringhe, puoi assegnare variabili di matrice l'una all'altra:
| Codice | Spiegazione |
|---|---|
|
Crea una matrice di 10 intelementi. Assegna il valore 4alla cella con index 2. Assegna il valore 9alla cella con index 7. Nella bvariabile, salvare l'indirizzo memorizzato nella avariabile. Ora ae bpunta allo stesso oggetto array in memoria. Nella cella dell'oggetto matrice con index 9, scrivi la somma dei valori memorizzati nelle celle 2(che memorizza il valore 4) e 7(che memorizza il valore 9). |
L'oggetto array rimane dov'era e le avariabili be memorizzano lo stesso indirizzo (riferimento) allo stesso oggetto. Guarda l'immagine:
2. Ulteriori dettagli sull'utilizzo degli array
Puoi creare un array di elementi di qualsiasi tipo. Per fare ciò, basta scrivere parentesi quadre dopo il nome del tipo. In generale, la creazione di un array si presenta così:
type[] name = new type[number];
Dove type è il tipo degli elementi che memorizzeremo nell'array. Nome è il nome della variabile che useremo per fare riferimento all'array e numero è il numero di celle nell'array.
L'esempio sopra è la forma canonica per creare una variabile array e un oggetto array. In realtà, si tratta di due entità separate.
Puoi creare una variabile array separatamente da un oggetto array:
type[] name;
name = new type[number];
E un altro punto non trascurabile:
Esempi:
| Codice | Spiegazione |
|---|---|
|
Crea una matrice di nelementi |
|
Crea un array con 203elementi |
|
|
0..99un
ArrayIndexOfBoundException, il che significa che l'indice era al di fuori dei limiti dell'array.
3. Lunghezza della matrice
Come hai visto nell'esempio precedente, puoi creare una variabile array da sola e successivamente assegnarle un valore (un riferimento a un oggetto array) da qualche parte nel codice. Puoi anche fare questo:
| Codice | Spiegazione |
|---|---|
|
Creare una variabile array il cui tipo è int[]Se la avariabile è minore di 10, creare un array di 10elementi. Altrimenti crea un array di 20elementi |
E ora cos'altro puoi fare con un tale array? Come fai a sapere quanti elementi ci sono?
Per aiutare in questo, gli array hanno una proprietà speciale (variabile) denominata length. Puoi trovare la lunghezza di un array usando questa espressione:
array.length;
Ecco arrayil nome della variabile array ed lengthè il nome della proprietà dell'array. Il valore della lengthproprietà non può essere modificato: la lengthproprietà stessa può essere assegnata ad altre variabili, ma non le si può assegnare nulla (se provi a farlo, il programma semplicemente non verrà compilato).
Possiamo continuare con l'esempio precedente in questo modo:
| Codice | Spiegazione |
|---|---|
|
Creare una variabile array il cui tipo è int[]Se la avariabile è minore di 10, creare un array di 10elementi. Altrimenti crea un array di 20elementi Ripeti su tutti gli elementi dell'array: da 0a lengtharray.length - 1 |
4. Riepilogo dei fatti sugli array in Java
Ricapitoliamo ciò che sappiamo sugli array:
Fatto 1. Un array è composto da molte celle.
Fatto 2. Si accede a una cella specifica utilizzando il suo numero (indice).
Fatto 3. Tutte le celle sono dello stesso tipo.
Fatto 4. Il valore iniziale di tutte le celle è 0 (se le celle memorizzano numeri), null(se le celle memorizzano riferimenti a oggetti) o false(se le celle memorizzano booleanvalori). Imparerai di più sui valori predefiniti in questo capitolo .
Il fatto 5. String[] list è solo la dichiarazione di una variabile. Questo non crea il contenitore (oggetto array) stesso. Per utilizzare la variabile, devi prima creare un array (contenitore) e assegnarlo alla variabile. Vedere l'esempio seguente.
Fatto 6. Quando creiamo un oggetto array (contenitore), dobbiamo indicare quanto è grande, cioè quante celle contiene. Questo viene fatto con un'istruzione come: new TypeName[n];
Fatto 7. La lunghezza di un array può essere trovata usando la .lengthproprietà.
Fatto 8. Dopo aver creato un array, non è possibile modificare il tipo dei suoi elementi o il numero di elementi che memorizza.
| Codice | Spiegazione |
|---|---|
|
sè nulllistènull |
|
La listvariabile memorizza un riferimento a un oggetto: un array di stringhe costituito da 10elementi. nÈ10 |
|
Ora |
|
Verrà generata un'eccezione (errore di programma), ovvero il programma andrà in crash. listmemorizza un riferimento anull |
|
Verrà generata un'eccezione di array fuori dai limiti (errore di programma). Se listmemorizza 10elementi/celle, allora gli indici validi sono: 0 1 2 3 4 5 6 7 8 9— 10elementi. |
GO TO FULL VERSION