Il termine tipo di dato indica l'insieme dei valori che una
variabile può assumere, ossia che
possono
essere memorizzati nell'area di memoria individuata dalla variabile. In altri termini
rappresenta il dominio della variabile.
In Java i tipi di dato si distinguono in:
primitivi: sono tipi di dato messi a
disposizione
nativamente dal linguaggio stesso e sono raggruppati in tre
categorie:
numerici: si tratta di valori numerici
di
tipo
intero o decimale
carattere: si tratta dei caratteri
Unicode
booleani: si tratta dei valori
vero/falso
(true/false)
riferimento: sono gli array e le classi (li
approfondiremo meglio nelle sezioni apposite (array e programmazione Object Oriented); gli
array
sono disponibili nativamente nel linguaggio Java, le classi richiedono il collegamento a
delle
librerie specifiche in cui queste sono definite
Possiamo riassumere graficamente come illustrato nella figura seguente:
Nota: Una delle
principali
differenze tra un tipo primitivo ed un tipo riferimento è il modo in cui devono essere confrontati due
valori. Per i tipi primitivi è possibile utilizzare l'operatore uguale
(=), per i tipi riferimento
occorre, invece, utilizzare funzionalità specifiche del tipo
stesso
che
affronteremo meglio con gli
argomenti che seguono.
Tipi primitivi in Java
Abbiamo in precednza raggruppato i tipi primitivi in Java in tre categorie:
numerici
carattere
booleani
Analizziamoli ora nel dettaglio.
I tipi numerici possono essere:
interi, ossia numeri senza cifre decimali.
Questi
numeri
si possono rappresentare in Java con i tipi che seguono:
int, ossia numeri interi a 32 bit, che
possono
rappresentare valori compresi nell'intervallo
-232-1 ... 232-1-1
ossia
nell'intervallo
-2.147.483.648 ... 2.147.483.647
long, ossia numeri interi a 64 bit, che
possono
rappresentare valori compresi nell'intervallo
short, ossia numeri interi a 16 bit, che
possono
rappresentare valori compresi nell'intervallo
-216-1 ... 216-1-1
ossia
nell'intervallo
-32.768 ... 32.767
byte, ossia numeri interi a 8 bit, che
possono
rappresentare valori compresi nell'intervallo
-28-1 ... 28-1-1
ossia nell'intervallo
-128 ... 127
decimali, ossia numeri con cifre decimali dopo
la
virgola. Questi numeri si possono rappresentare in Java con i tipi che seguono:
float, ossia numeri decimali in virgola
mobile a
32 bit
double, ossia numeri decimali in virgola
mobile
a 64 bit
Il tipo carattere occupa 16 bit e può rappresentare 216,
ossia
65536 caratteri, ossia tutte i caratteri usati negli alfabeti occidentali, ma anche gli ideogrammi e
segni
propri delle altre lingue
Alcuni caratteri non sono stampabili, oppure hanno un significato speciale in alcuni linguaggi di
programmazione. Per questa ragione si rappresentano con una sequenza speciale di caratteri oppure
anteponendo il carattere \ (backslash) al carattere stesso.
Queste sequenze speciali prendono il nome di sequenze di escape.
Le più comuni sono:
\n che indica un avanzameneto di riga
\r che indica un ritorno ad inizio riga, senza
avanzamento della riga
\t che indica una tabulazione, ossia uno spazio
di
dimensione maggiore
\\ che indica un carattere backslash
\" che indica il carattere virgolette doppie
\' che indica il carattere singola virgoletta
Questi caratteri possono essere usati, al pari degli altri, per comporre del testo da visualizzare
all'utente, in un programma Java.
Il tipo boolean occupa 1 bit e può rappresentare 2 valori, ossia 0/1
oppure
false/true
Il tipo String
Il linguaggio Java non dispone di un tipo primitivo per la rappresentazione delle sequenze
alfanumeriche,
ossia delle stringhe di caratteri. Per tale ragione è stato realizzato il tipo String (riferimento),
che permette di lavorare con le sequenze alfanumeriche. La prima importante conseguenza di
questa
rappresentazione è che due stringhe non possono essere confrontate con il classico operatore di
uguaglianza (==), ma occorre utilizzare una funzionalità specifica del tipo String che si chiama
equals.
Più specificatamente, per confrontare due stringhe bisogna utilizzare il codice sottostante:
// se s1 ed s2 sono due variabili di tipo String
// per verificare che i valori contenuti
// siano uguali, occorre utilizzare la sintassi
s1.equals(s2)
// che restituisce vero se le due sequenze
// alfanumeriche s1 ed s2 sono identiche
Inoltre, gli oggetti del tipo String di Java sono immutabili, ossia
il
loro
valore non può essere modificato.
Questo implica la necessità di distruggere il vecchio valore e creare un nuovo oggetto, ogni volta
che
si
vuole modificare il contenuto di una variabile di questo tipo.