Autore: Cinzia Bocchi

Ultimo aggiornamento: 20/09/14
1
Tipi primitivi in Java

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 l’analisi 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 l’insieme 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 dell’insieme Z. Occorre osservare che, mentre l’insieme 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 l’insieme 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 nell’uso 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.

Sign up to vote on this title
UsefulNot useful