Abbiamo già
visto come dichiarare gli attributi di una classe tramite variabili
e costanti, ora vedremo di che tipo possono essere.
Un tipo di dato definisce i valori ammessi per una variabile
appartenente al tipo e può essere:
- uno degli otto tipi primitivi;
- il nome di una classe o di uninterfaccia;
- un array.
I tipi di dato primitivi comprendono:
- i tipi per i numeri interi e a virgola mobile;
- i caratteri;
- i valori booleani (true e false).
e sono detti primitivi perché sono stati incorporati nel
linguaggio Java, anziché essere oggetti effettivi, allo scopo di
renderne più efficiente limpiego.
Per le variabili
che possono assumere solo valori interi, esistono in Java 4 tipi,
il cui utilizzo dipende più che altro dalla dimensione dellintero,
ossia dal range di valori che può assumere:
|
TIPO |
DIMENSIONE |
INTERVALLO DI VALORI |
|
byte |
8 bit |
da 128 a 127 |
|
short |
16 bit |
da 32768 a 32767 |
|
int |
32 bit |
da 2147483648 a 2147483647 |
|
long |
64 bit |
da 9223372036854775808 a 9223372036854775807 |
Notiamo che non esistono tipi interi senza segno e che le loro dimensioni
e caratteristiche sono indipendenti dalla piattaforma e dal sistema
operativo.
Per le variabili che possono assumere valori a virgola mobile esistono
2 tipi:
|
TIPO |
DIMENSIONE |
INTERVALLO DI VALORI |
|
float |
32 bit |
da 1.4E-45 a 3.45E+38 |
|
double |
64 bit |
da 4.9E-324 a 1.7E+308 |
Oltre a differire per il range di valori che possono assumere, questi
due tipi differiscono anche per la precisione (infatti il tipo double
ha una precisione maggiore del tipo float) e ovviamente anche per
lo spazio di memoria occupato.
Riprendiamo il codice della classe Automobile e verifichiamo
che la scelta di dichiarare gli attributi capacitaSerbatoio, livelloRiserva,
consumo e quantitaBenzina di tipo float è una buona scelta, in quanto
questo tipo è sufficiente a rappresentarli.
Il settimo dei tipi fondamentali è il tipo char, utilizzato
per singoli caratteri quali lettere, numeri, segni di punteggiatura
e altri simboli. Questo tipo di dato ha dimensione di 16 bit e utilizza
la codifica dello standard Unicode, che permette di gestire migliaia
di caratteri.
Un carattere deve essere racchiuso tra singoli apici e può essere
anche un carattere non stampabile o non accessibile da tastiera;
questi ultimi possono essere rappresentati per mezzo di codici speciali,
elencati nella seguente tabella:
| CODICE |
SIGNIFICATO |
|
\n |
nuova riga |
|
\t |
tabulatore |
|
\b |
cancella il carattere a sinistra |
|
\r |
ritorno a capo |
|
\f |
avanzamento pagina |
|
\\ |
barra inversa |
|
\ |
apice |
|
\ |
doppio apice |
Ad es. è possibile scrivere:
char nuovaRiga = \n;
char letteraA = A;
Infine lottavo tipo fondamentale è boolean, che può
contenere il valore true (vero) o il valore false (falso);
è possibile assegnare:
boolean autoradio = true;
boolean antifurto = false;
Per ognuno di questi tipi di dati esistono delle classi omonime,
ma scritte con liniziale maiuscola, che hanno funzionalità
diverse (quindi non interscambiabili con essi), la cui corrispondenza
è mostrata in tabella:
| TIPO PRIMITIVO |
OGGETTO CORRISPONDENTE |
|
byte |
Byte |
|
short |
Short |
|
int |
Integer |
|
long |
Long |
|
float |
Float |
|
double |
Double |
|
char |
Character |
|
boolean |
Boolean |
E possibile convertire un tipo primitivo in un altro tramite
loperazione di casting.
Il casting è unoperazione che può essere pensata come avente
unorigine (il valore da convertire in un altro tipo) e una
destinazione (la variabile cui viene assegnato il valore convertito)
ed ha la seguente forma:
variabileDestinazione =
(nuovoTipo) valoreOrigine;
Questa operazione è necessaria se vogliamo assegnare un valore ad
un tipo più piccolo, ad es. un int ad un byte, perché
può portare alla perdita di informazioni, ma possiamo benissimo
assegnare un valore int ad una variabile di tipo float,
perché ciò non comporta perdita di informazioni.
Ad es.
int x = 5;
double y = x;
è possibile e non richiede alcun casting.
Nel seguente esempio:
int z = (int) (x / y);
a z di tipo int è assegnato il valore del risultato della
divisione di x per y.
Il casting non è ammesso per i valori booleani e può essere effettuato
anche tra oggetti appartenenti a classi diverse (questo lo vedremo
in seguito).
Nella prossima lezione vedremo come dichiarare i metodi per la classe
Automobile.
Torna all'indice Generale del corso di Corso di Java di Software Planet