AndroidLab

Il Laboratorio Italiano Android e Google Chrome

Questa rapida lezione è parte di una serie di tutorial di familiarizzazione con Java, il linguaggio di programmazione utilizzato per sviluppare applicazioni Android. Questo tutorial mosta come lavorare con gli Array in Java.

Apprendere-Java-per-programmare-Android_thumb


Che cosa è un array?

Un array o matrice è una struttura dati utilizzata per memorizzare una lista ordinata di elementi.  Per esempio, è possibile creare un array di caratteri per rappresentare le vocali dell’alfabeto:

1
char aVocali[] = {'a','e','i','o','u'};

Proprio come in C o C + +, in Java, gli array vengono indicizzati numericamente con un sistema basato su 0. Vale a dire che il primo elemento della matrice (cioè, ‘a’) ha  indice 0, il secondo  (‘e’) corrisponde all’indice 1 e così via.

Lavorare con gli array in Java è più facile che in molti altri linguaggi di programmazione perché gli array in Java sono oggetti (di tipo array, appunto), con tutti i benefici che ne derivano, per esempio, è possibile controllare la dimensione di un array utilizzando la proprietà length:

1
int lunghezza = aVocali.length;

Cosa si può memorizzare in un array?

In un array è possibile memorizzare qualsiasi oggetto o tipo primitivo. Per esempio, è possibile memorizzare numeri interi :

1
int  aNumeri [] = { 2 , 4 , 6  };

In alternativa, è possibile memorizzare tipi non primitivi come le stringhe (o qualsiasi altra classe):

1
aFratelli String [] = { "Giulio" , "Paolo" , "Michele" };

A volte, può essere utile memorizzare oggetti di diverso tipo in una matrice. Per fare questo si può approfittare dell’ ereditarietà e utilizzare una classe superiore per il tipo di matrice, per esempio essendo la classe Object genitore  di tutte le classi  è possibile memorizzare diversi tipi di oggetto in un singolo array in questo modo:

1
2
3
4
double uno = 1.0;
Integer due = new Integer(2);
String tre = "tre";
Object aOggetti[] = {uno, due, tre};

Gli elementi degli array sono null fino a quando non gli viene assegnato un valore valido (cioè, la matrice viene inizializzata automaticamente ma l’utente è responsabile per l’assegnazione dei suoi valori).

Dichiarazione di array

Ci sono diversi modi per dichiarare un array. Come già visto, è possibile dichiarare un array  assegnando direttamente i valori ai suoi elementi. Ad esempio, il seguente codice dichiara un array di interi di lunghezza 3 e inizializza la matrice in una sola riga:

1
int  aNumeri [] = { 2 , 4 , 6  };

È possibile anche dichiarare un array di dimensione specifica e successivamente assegnare i valori a ciascun elemento:

1
2
3
4
5
6
double aPotenzediDue[] = new double[5];
aPotenzediDue[0]=Math.pow(2,0);
aPotenzediDue[1]=Math.pow(2,1);
aPotenzediDue[2]=Math.pow(2,2);
aPotenzediDue[3]=Math.pow(2,3);
aPotenzediDue[4]=Math.pow(2,4);

Si potrebbe ottenere lo stesso risultato con il seguente codice:

1
double aPotenzediDue[] = {1.0d, 2.0d, 4.0d, 8.0d, 16.0d};

Ci sono anche altri modi per dichiarare gli array, per esempio, si può creare la variabile array e assegnare i valori a ciascun elemento separatamente, utilizzando la parola chiave new. Si possono anche inserire le parentesi quadre prima del nome della variabile. Il seguente codice definisce un array di elementi stringa e dopo assegna i valori:

1
2
3
4
5
String [] aColoriSemaforo;
aColoriSemaforo = new String[3];
aColoriSemaforo[0] = new String("rosso");
aColoriSemaforo[1] = new String("giallo");
aColoriSemaforo[2] = new String("verde");

Accedere al contenuto degli Array

È possibile recuperare i valori degli array utilizzando gli indici, per esempio è possibile accedere al secondo elemento dell’array aColoriSemaforo (definito precedentemente) nel seguente modo:

1
String strColoreSemaforo = aColoriSemaforo[1];

Iterazione degli array

Gli array sono usati come un elenco ordinato di oggetti, risulta utile, pertanto, scorrere gli array in ordine per recuperare il valore di ogni elemento metodicamente. In Java ci sono diversi metodi per compiere questa operazione. Essendo possibile controllare la dimensione di un array è possibile utilizzare uno qualsiasi dei tipici cicli che abbiamo visto in uno dei precedenti tutorial. Per esempio, il seguente codice Java dichiara un semplice array intero di tre numeri e usa un semplice ciclo for per scorrerne gli elementi:

1
2
3
4
5
int aNumeri[] = { 2, 4, 6 };
 
for (int i=0;i<anumeri .length;i++) {
    String strNumeri = "aNumeri[" + i + "]=" + aNumeri[i];
}

Java dispone anche di un utile ciclo for each per scorrere gli array in modo semplificato. Per utilizzare il ciclo for-each, è necessario definire una variabile  poi mettere i due punti e quindi specificare il nome dell’array. Ad esempio, il codice riportato di seguito definisce un ciclo simile al precedente utilizzando la struttura for-each :

1
2
3
4
for (int num : aNumeri) {
    String strNumeri = num;
 
}

Pur essendo molto utile il ciclo for-each non può essere utilizzato per tutte le situazioni in quanto durante l’iterazione non si ha traccia dell’indice.

Conclusioni

In questa breve lezione abbiamo imparato a conoscere gli array in Java. L’array è una struttura dati , fondamentale per la programmazione, che consente di memorizzare un  determinato numero di oggetti in maniera organizzata. In Java, gli array sono oggetti  rendendo l’assegnazione e l’utilizzo più semplice (ma anche diverso) rispetto a come gli array siano impiegati in altri linguaggi di programmazione.

Indice

  1. Introduzione a Java
  2. La Sintassi di Java
  3. instance of – Verificare il tipo di un oggetto
  4. Gli Array

Michele Dipace

Admin di Androidlab e "Computer Addicted", ha cominciato la sua"carriera" nella metà degli anni 80 sui computer 8 bit Commodore e Sinclair passando poi al 16 bit Amiga, diventandone grande appassionato. Oggi Linux user, crede che Android sia il sistema operativo destinato ad emergere nel mercato della telefonia mobile.

More Posts - Website

Follow Me:
TwitterFacebookLinkedInPinterestGoogle PlusYouTube

  • stardev

    sto studiando il C++ e confermo tutto quello che hai scritto riguardo le somiglianze, non è che puoi coinvolgere qualche bravo sviluppatore anche per quelle persone che stanno affrontando il C++ ? avrei proprio bisogno di confrontarmi con qualcuno, il Java , l'SQL e l'HTML5 saranno i miei prossimi step, per ora alta concentrazione sul C++ , il mio prof dice che mi devo fare le ossa con questo linguaggio .

    • Caro stardev affronteremo l'argomento C++ quando e se parleremo dell'Android NDK

  • stardev

    in particolare noi col C++ non possiamo allargare e stringere un vettore dinamicamente , intendo farglielo fare in automatico al compilatore , ma ci sono delle strategie che ne aggirano il problema:

    1. int dim = 10;

    int v[dim];

    2. c'è un metodo che punta a NULL (non lo ricordo però) e in base a questo controllo il vettore si auto ridimensiona

    ma RIPETO il C/C++ standard non lo permette di default .

  • Pingback: Tweets that mention Apprendere Java per programmare Android: gli Array | AndroidLab -- Topsy.com()

  • Ciao Stardev, se non ricordo male nella libreria standard del C++ esiste l'utilissima classe vector per gestire array dinamici in cui ci puoi mettere elementi di qualsiasi tipo o classe ovviamente.
    Un esempio può essere:

    arraydinamico = new std::vector<int>;

    come vedi non l'ho dimensionato staticamente e lo potrai popolare dinamicamente con il metodo push_back e ai cui elementi potrai accedere con il metodo at . vector fornisce anche un tipo vector::iterator utile per iterare sugli elementi del vettore dinamico. Ad esempio:

    for (std::vector<int>::iterator it = arraydinamico>begin(); it != arraydinamico->end(); it++ ) { // }

    Insomma conviene dare un'occhiata a questa classe 🙂
    Ciao

    • confermo, nelle librerie standard di C++ c'è la classe vector.
      mentre quello che dici tu forse è il C che non lo permette a meno di star ad usare realloc per riallocare uno spazio di memoria di un array, precedentemente allocato, ed aumentarne così le dimensioni.

      Non confondere C e C++ il secondo è l'estensione del prima ma sono diversi. Un buon programmatore in C sicuramente sa programmare in C++, il contrario non è sempre vero.

  • Per il prossimo articolo consiglio di trattare le strutture di "contenimento" di oggetti generici, come Vector LinkedList, ArrayList … che sono ben documentate nel java Doc http://download.oracle.com/javase/6/docs/api/ se qualcuno vuole dare un'occhiata.

    PS è da molto che non provo, ma credo che per assengare un double al vettore serva un casting esplicito, sarebbe da controllare

  • Ho appena verificato l'esempio con eclipse ed ha compilato senza borbottare 😛

  • Pingback: Apprendere Java per programmare Android: Introduzione a Java | Android Lab()

  • Pingback: Apprendere Java per programmare Android: La Sintassi di Java | Android Lab()

  • Pingback: Apprendere Java per programmare Android: instanceof – Verificare il tipo di un oggetto | Android Lab()

Forum Android
Diventa un blogger, scrivi un articolo