Estratto del documento

Array Attenzione: nella definizione della variabile

¨ Lo strumento messo a disposizione dal oggetto devono essere presenti le parentesi

linguaggio Java (e in molti altri linguaggi di quadre, ma NON deve essere indicata la

programmazione) per memorizzare una dimensione dell’array; la variabile potrà riferirsi

array

sequenza di dati si chiama (che significa solo ad array di quel tipo, ma di qualunque

“schiera” o “sequenza ordinata”) dimensione

un oggetto

¨ In Java, un array è che

una sequenza posizionale di

rappresenta

dati omogenei (cioè tutti dello stesso tipo), una

Una variabile x che si riferisce a un array è

che vengono detti elementi o componenti variabile oggetto che contiene un

dell’array riferimento all’oggetto array

Costruire un array Utilizzare un array

¨ Un array in Java è un oggetto ¨ Al momento della costruzione, tutti gli

¤ Come ogni oggetto*, deve essere costruito elementi dell’array vengono inizializzati a un

con l’operatore new, dichiarando il tipo di dati le stesse regole viste per

valore, seguendo

che potrà contenere le variabili di esemplare prive di

inizializzazione esplicita

¨ Nella costruzione il tipo di dati è seguito da

una coppia di parentesi quadre che ¨ Si accede al contenuto di una cella dell’array

contiene la dimensione dell’array, cioè il indicando tra parentesi la posizione voluta

numero di elementi che potrà contenere ¨ Il numero utilizzato per accedere a un

¨ In Java, le parentesi quadre si usano solo particolare elemento dell’array si chiama

per gli array indice

Il tipo di dati di un array può essere qualsiasi ¨ L’indice può assumere un valore compreso tra

tipo di dati valido in Java incluso

0 ( ) e la dimensione dell’array

esclusa

( ), cioè segue le stesse convenzioni

viste per le posizioni dei caratteri in una stringa

¤ il primo elemento ha indice 0

dimensione

¤ l’ultimo elemento ha indice ( - 1)

¨ A tutti gli effetti sintattici e semantici,

un elemento di un array equivale a una

singola variabile dello stesso tipo

Cosa succede se si accede a un elemento

dell’array usando un indice sbagliato (maggiore

o uguale alla dimensione, o negativo) ?

¤ L’ambiente di esecuzione (cioè l’interprete) Passare un array come parametro

lancia un’eccezione di tipo Spesso si scrivono metodi statici che ricevono

ArrayIndexOutOfBoundsException array parametri espliciti

come

Gli array sono una struttura dati ad

accesso casuale

n Cioè il tempo di accesso (in lettura o

scrittura) a uno dei suoi elementi non

deve dipendere dal valore dell’indice

associato a tale elemento Ricevendo una copia della variabile riferimento,

nel metodo invocato è anche possibile

La dimensione di un array modificare gli elementi dell’array: il metodo

chiamante vedrà gli elementi dell’array

¨ Un array è un oggetto un po’ strano…

¤ non ha metodi pubblici, né statici né di

esemplare

¨ L’unico elemento pubblico di un oggetto di

tipo array è la sua dimensione, a cui si accede

attraverso la sua variabile pubblica di

esemplare length (attenzione, non è un

metodo!) Un metodo può anche restituire un (riferimento

a un) array

In realtà, length è una variabile pubblica ma è

non può essere modificata

final, quindi , può

soltanto essere ispezionata RIASSUNTO

Costruzione di un array

¨ Sintassi: una

¨ Scopo: costruire un array per contenere dati ¨ Una variabile che si riferisce a un array è

NomeTipo lunghezza variabile oggetto che contiene un

del tipo ; la indica il riferimento all’oggetto array

numero di dati che saranno contenuti nell’array . Copiando il

non si

contenuto della variabile in un’altra

lunghezza

¤ Se è negativa, viene lanciata copia l’array , ma si ottiene un altro

l’eccezione NegativeArraySizeException stesso oggetto array

riferimento allo

NomeTipo

Nota: può essere uno dei tipi

primitivi di Java o il nome di una classe

¨ Nota: i singoli elementi dell’array vengono

inizializzati con le stesse regole delle variabili di

esemplare che siano prive di inizializzazione Clonare un array

esplicita clonare

¨ Se si vuole un array, cioè ottenere

¤ 0 per variabili numeriche e caratteri, false una copia dell’array con identico contenuto,

per variabili booleane, null per variabili oggetto bisogna

Variabile riferimento a un array creare un nuovo array dello stesso tipo

¤

¨ Sintassi: e con la stessa dimensione

¨ Scopo: definire la variabile copiare ogni elemento del primo array

¤

nomeRiferimento come variabile oggetto che nel corrispondente elemento del secondo

potrà contenere un riferimento a un array di array

NomeTipo

dati, ciascuno dei quali sarà di tipo

¨ Le parentesi quadre [ ] sono necessarie e non

devono contenere l’indicazione della

dimensione dell’array Invece di usare un ciclo, è possibile invocare il

metodo statico arraycopy della classe System

Argomenti sulla riga comandi(String[]

args) ¨ Il metodo System.arraycopy consente, più

in generale, di copiare una porzione di un

Quando si esegue un programma Java, è array in un altro array

possibile fornire dei parametri dopo il nome

della classe che contiene il metodo main ¤ Anche l’array di destinazione (quello in cui si

copiano i dati) deve già esistere e deve essere

¨ Tali parametri vengono letti dall’interprete grande a sufficienza

Java (che li riceve dal sistema operativo) e

trasformati in un array di stringhe che

costituisce il parametro del metodo main

Le specifiche della JVM dicono che

¤ la lunghezza dell’array corrisponde sempre al Copiare un intero array con System.arraycopy

numero di parametri forniti sulla riga comandi

¤ se non vengono forniti parametri sulla riga

comandi, viene passato al metodo main un

array di lunghezza zero (perfettamente valido) Clonare un array

¨ E’ anche possibile usare il metodo

Copiare un array ¤ T[] Arrays.copyOf(T[] original, int

newlength)

¤ “abbandonare” il vecchio array, usando poi

quello nuovo

¤ Se newlength == values.length array dinamico

si parla di , sottintendendo che

n Copio tutto l’array gestione dinamica

in realtà si tratta di una

dell’array : non può esserci ambiguità perché

¤ Se newlength < values.length in Java non esistono array dinamici, cioè di

n Tronco l’array alla dimensione fornita dimensione modificabile

¤ Se newlength > values.length ridimensiona l’array

¨ si dice anche che si , di

nuovo senza ambiguità

n Copio tutto l’array e nelle celle in più vengono

messi valori di default secondo le solite regole

È anche possibile usare il metodo clone resize

Il metodo statico

¨ Attenzione: il metodo clone restituisce un

riferimento di tipo Object

¨ È necessario effettuare un cast per ottenere

un riferimento del tipo desiderato

¨ In questo caso double[]

Dimensione fisica vs dimensione logica

¨ Dimesione fisica Lo stesso metodo può essere usato per

¤ values.length è il numero di valori clonare un intero array; in seguito, è

memorizzabili ed è la dimensione fisica consentito utilizzare sia il nuovo sia il vecchio

dell’array Garbage collector

¨ Dimesione logica ¨ Che cosa succede all’array ‘abbandonato’?

¤ valuesSize è il numero di valori ¤ JVM (Java Virtual Machine) provvede a

memorizzati ed è la dimensione logica effettuare automaticamente la gestione della

dell’array memoria (garbage collection) durante

l’esecuzione di un programma

¨ Viene considerata memoria libera (quindi

riutilizzabile) la memoria eventualmente

occupata da oggetti che non abbiano più un

riferimento nel programma

Array riempiti solo in parte

¨ Si dice che un array utilizzato in questo modo

è “riempito solo in parte”, anche se sarebbe Allocazione della memoria in Java

meglio dire “riempito in una sua porzione ¨ A ciascun programma java al momento

iniziale” dell’esecuzione viene assegnata un’area di

memoria

Cambiare dimensione a un array ¨ Una parte della memoria serve per

memorizzare il codice; quest’area è statica,

¨ Abbiamo già visto come in Java sia ovvero non modifica le sue dimensioni durante

impossibile aumentare (o diminuire) la l’esecuzione del programma

dimensione di un array ¨ In un’area dinamica (ovvero che modifica la

¨ Ciò che si può fare è: sua dimensione durante l’esecuzione) detta

¤ creare un nuovo array più grande di quello Java Stack vengono memorizzati i parametri e

“pieno” le variabili locali dei metodi

¤ copiarne il contenuto Durante l’esecuzione dei metodi di un

programma vengono creati dinamicamente

Anteprima
Vedrai una selezione di 3 pagine su 6
Array in Java Pag. 1 Array in Java Pag. 2
Anteprima di 3 pagg. su 6.
Scarica il documento per vederlo tutto.
Array in Java Pag. 6
1 su 6
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher togna52 di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Rodà Antonio.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community