Corso Java Base (3): valori di default e array

Valori di default

Non è sempre necessario assegnare un valore quando viene dichiarata una variabile. Nel caso in cui una variabile non venga inizializzata (non le venga assegnato un valore) il compilatore le assegnerà un valore predefinito. In generale questo valore di default sarà zero o null, a seconda del tipo di dato.
È comunque consuetudine assegnare sempre un valore ad una variabile nel momento in cui essa viene dichiarata.

La tabella seguente sintetizza i valori predefiniti per i tipi di dati di cui abbiamo discusso:

Tipo di dato Valore predefinito
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0d
char ‘\u0000’
String null
boolean false

Per le variabili locali il comportamento è leggermente diverso, il compilatore non assegna mai un valore di default a una variabile locale non inizializzata.
Se non si inizializza una variabile locale al momento della sua dichiarazione, è necessario assicurarsi di assegnarle un valore prima di utilizzarla, altrimenti l’accesso alla variabile locale, non inizializzata, si tradurrà in un errore di compilazione.

Array

Un array è un oggetto contenitore che raggruppa, al suo interno, un numero fisso di valori di un singolo tipo. La lunghezza di un array è stabilita quando l’array viene dichiarato. Dopo la creazione, la sua lunghezza rimane fissa.

objects-tenElementArray

Ogni valore contenuto in un array è chiamato elemento e ogni elemento è accessibile tramite un indice numerico ad esso riferito.
Come mostrato nella figura, la numerazione inizia con 0.
L’elemento 9, per esempio, è accessibile utilizzando l’indice 8.

Il seguente programma crea un array di tipi interi (int), mette alcuni valori in esso, e ogni valore viene stampato sullo standard output.

class ArrayProva {
    public static void main(String[] args) {
        //dichiarazione di un array di tipi interi
        int[] totArray;
        // l’array conterrà 5 valori di tipo int
        totArray = new int[5];
        // inizializzazione degli elementi dell’array
        // (da indice 0 a indice 4)
        anArray[0] = 1;
        anArray[1] = 5;
        anArray[2] = 7;
        anArray[3] = 10;
        anArray[4] = 50;
        //Stampa a video I singoli elementi dell’array 
        System.out.println("Elemento con indice 0: " + totArray[0]); 
        System.out.println("Elemento con indice 1: " + totArray[1]); 
        System.out.println("Elemento con indice 2: " + totArray[2]); 
        System.out.println("Elemento con indice 3: " + totArray[3]); 
        System.out.println("Elemento con indice 4: " + totArray[4]); 
    }
}

L’output di questo programma sarà:

Elemento con indice 0: 1
Elemento con indice 1: 5
Elemento con indice 2: 7
Elemento con indice 3: 10
Elemento con indice 4: 50

Dichiarazione di un Array

Il programma di esempio appena visto dichiara un array con il seguente codice:

int[] totArray;

Analogamente alla dichiarazione di una variabile di un altro tipo, la dichiarazione di un array neccessita di due componenti: il tipo ed il nome.
Il tipo di array, ovvero il tipo di dati che esso deve contenere si specifica con la seguente sintassi:

tipo[]

le parentesi quadre rappresentano dei caratteri speciali che in questo caso specificano che la variabile che si sta dichiarando rappresenta un array. Il nome di una variabile di tipo array deve rispettare le regole viste in precedenza.

Allo stesso modo, è possibile dichiarare array di altri tipi:

byte[] byteArray; 
short[] shortArray; 
long[] longArray; 
float[] floatArray; 
double[] doubleArray; 
boolean[] booleanArray; 
char[] charArray; 
String[] stringArray;

È inoltre possibile inserire le parentesi quadre dopo il nome dell’array:

CharArray char [];

Tuttavia la convenzione sconsiglia questa forma, le parentesi quadre che identificano il tipo di array dovrebbero essere collocate con la designazione del tipo, come visto in precedenza.

Creazione, inizializzazione e accesso ad un array

Un modo per creare un array comporta l’utilizzo dell’operatore new. L’istruzione successiva, del programma scritto precedentemente, alloca un ArrayProva che contiene dieci elementi interi e assegna l’array alla variabile totArray:

totArray = new int[5];

l’omissione di questa linea di codice avrebbe generato un errore di compilazione riportante la seguente descrizione:

ArrayProva.java:4: Variable totArray may not have been initialized.

Le righe successive assegnano i valori a ciascun elemento dell’ array:

totArray[0] = 1; 
totArray[1] = 5; 
totArray[2] = 7; 
totArray[3] = 10; 
totArray[4] = 50;

In alternativa, è possibile utilizzare la sintassi di scelta rapida per creare e popolare un array:

int[] totArray = {1, 5, 7, 10, 50};

Utilizzando questa sintassi la lunghezza dell’array è determinata dal numero degli elementi forniti tra le parentesi graffe. È inoltre possibile dichiarare un array di array (noto anche come array multidimensionale) utilizzando due o più insiemi di parentesi quadre, come:

String [][] nomi

Ogni elemento, quindi, deve essere accessibile da un corrispondente numero di valori di indice. Nel linguaggio di programmazione Java, un array multidimensionale è semplicemente un array i cui componenti sono a loro volta array.
Una conseguenza di questo è che le righe possono variare in lunghezza, come mostrato nel seguente programma MultiArray:

class MultiArray {
    public static void main(String[] args) {
    //stampa a video Dr. Gates
    String[][] names = {{"Dr. ","Prof. ","Ing."},{"Gates","Jobs"}}; 
    System.out.println(names[0][0] + names[1][0]);
    //stampa a video Ing. Jobs
    System.out.println(names[0][2] + names[1][1]);
    }
}

L’output del programma sarà:
Dr. Gates
Ing. Jobs

E’ possibile utilizzare la proprietà length per determinare le dimensioni di un array.
Il codice:

System.out.println(totArray.length);

Stamperà a video il numero degli elementi contenuti nell’array totArray.