Introduzione I tipi in Java possono essere classificati in tipi primitivi e tipi riferimento (object reference). Ogni linguaggio di programmazione fornisce un certo numero di tipi primitivi. In generale, con il termine tipo primitivo si intende un tipo di dato gi definito nel linguaggio, dal quale si pu partire per la costruzione di espressioni, o di tipi composti. Per ogni tipo primitivo sono anche disponibili una serie di operatori che consentono di scrivere espressioni (es. + un operatore per i tipi numerici). La distinzione tra tipi primitivi e tipi riferimento tuttavia pi sottile e si basa sul modo in cui i valori sono indirizzati nella memoria del computer; ma di questa questione ce ne occuperemo in seguito. Prima di iniziare lanalisi dei tipi primitivi di Java, osservate la seguente figura che offre una panoramica sui tipi del linguaggio.
Tipi Java primitivi riferimento numerici caratteri booleani interi virgola mobile array stringhe classi
Fig.1 Tipi Java
Tipo intero Il tipo intero coincide con linsieme dei numeri interi Z.
Z= {,-3,-2,-1,0,+1,+2,+3,}
Una variabile di tipo intero pu quindi assumere, di volta in volta, un valore tra quelli dellinsieme Z. Occorre osservare che, mentre linsieme dei numeri interi Z contiene infiniti elementi, la memoria di un computer non infinita. Di conseguenza una variabile intera pu assumere i valori compresi tra un minimo numero intero (MININT) e un massimo numero intero (MAXINT) che coincidono con il minimo e il massimo numero intero rappresentabile. Se si supera il MININT (es. con una sottrazione MININT-1) o il MAXINT (es. con MAXINT+1) si verifica rispettivamente un underflow e un overflow (traboccamento). Java, in questa situazione, non segnala alcun errore ma il risultato restituito imprevedibile e sicuramente errato.
Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/14 2 Java fornisce diversi tipi interi, che si distinguono proprio per il MININT e il MAXINT; essi sono riassunti nella tabella seguente.
parola chiave spazio occupato intervallo di valori caratteristiche byte 8 bit MININT= 2 7
MAXINT= 2 7 -1 utilizzati per manipolare bit short 16 bit MININT= 2 15
MAXINT= 2 15 -1 poco utilizzati int 32 bit MININT= 2 31
MAXINT= 2 31 -1 pi utilizzati long 64 bit MININT= 2 63
MAXINT= 2 63 -1 poco utilizzati
Osservazioni I numeri interi possono essere rappresentati in base 8 (numeri ottali) anteponendo al numero uno zero. Per esempio, 034 rappresenta il numero ottale 34 e non il numero decimale 34. Pertanto, i numeri interi in base 10 non possono mai iniziare con zero. I numeri interi possono essere rappresentati in base 16 (numeri esadecimali) anteponendo al numero uno zero e una x (maiuscola o minuscola). Per esempio, 0x912 il numero esadecimale 912. Le costanti numeriche intere esplicite (per intenderci, i numeri che compaiono in una espressione) sono sempre considerate interi a 32 bit, cio di tipo int. Per rendere una costante numerica esplicita di tipo long, bisogna aggiungere dopo il numero la lettera L maiuscola o minuscola (es. 34L).
Tipo numerico a virgola mobile (floating point) Il tipo floating point coincide con linsieme dei numeri razionali Q. Java fornisce due tipi floating point: float (precisione semplice) e double (precisione doppia). Vediamoli in dettaglio nella seguente tabella.
parola chiave spazio occupato precisione caratteristiche float 32 bit semplice 7 cifre decimali significative imprecisi per numeri troppo piccoli o troppo grandi double 64 bit doppia 15 cifre decimali significative sui processori moderni i calcoli con i double sono pi veloci di quelli che usano float
Osservazioni Solitamente, per i numeri razionali, si utilizza il tipo double, poich non ci sono vantaggi evidenti nelluso del tipo float. Le costanti numeriche esplicite con punto decimale (es. 15.347) sono sempre interpretate come double. Per rendere una costante numerica di tipo float, bisogna aggiungere dopo il numero la lettera F maiuscola o minuscola (es. 15.347F).
Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/14 3 Tipo carattere Una variabile di tipo carattere pu contenere un carattere in formato Unicode. La codifica Unicode comprende decine di migliaia di caratteri, vale a dire gli alfabeti pi diffusi nel mondo. I valori da 0 a 256 corrispondono, per motivi di retro- compatibilit, al set di caratteri ASCII.
parola chiave spazio occupato intervallo valori caratteristiche char 16 bit se utilizzati come interi da 0 a 65.535 caratteri UNICODE; i primi 256 caratteri sono quelli del codice ASCII
Una variabile di tipo carattere , a tutti gli effetti, un intero a 16 bit privo di segno. Nell'effettuare assegnamenti, tuttavia, si preferisce ricorrere alle costanti carattere, racchiudendo un singolo carattere tra apici, come nell'esempio seguente: char carattere = 'a';
Ad ogni carattere del codice ASCII associato un numero binario, al quale corrisponde un ben determinato numero decimale. La combinazione di tasti ALT+codicedecimale, consente di stampare a video il particolare carattere, ammesso che il carattere sia effettivamente stampabile. Osservate, per esempio, la seguente tabella:
La combinazione ALT+123 permette di ottenere la parentesi graffa aperta, mentre la combinazione ALT+125 restituisce la parentesi graffa chiusa.
Tipo booleano Una variabile booleana pu assumere solamente i valori true (vero) e false (falso). Il termine booleano deriva dal nome del matematico e logico britannico George Boole, considerato il fondatore della logica matematica.
parola chiave intervallo valori caratteristiche boolean true, false non sono convertibili in numeri
Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/14 4 Tipo stringa Le stringhe in Java non sono tipi di dati primitivi, ma vengono utilizzate come se lo fossero. Una stringa una sequenza di caratteri alfanumerici (alfabetici e numerici) di lunghezza qualsiasi (es. il codice fiscale).
parola chiave intervallo valori caratteristiche String sequenze di alfanumerici di lunghezza qualsiasi non sono tipi primitivi ma come se lo fossero
Il valore di una stringa sempre racchiuso tra virgolette; per esempio:
String str = saluti;
_______________________________________________________________________ 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.