Nella versione a 32bit il range rappresentabile va calcolato pensando ad un bit di segno, una mantissa a 23bit e un esponente a 8bit con valori compresi tra -126 e 127.
Inoltre lo standard prevede la rappresentazione di due valori per zero (da destra e da sinistra) due per infinito (positivo e negativo), e di valori NaN (not a number) da utilizzare ad esempio come risultati di operazioni impossibili (es. divisioni per zero).
Tipo | Q.tà di Memoria | Informazione rappresentata | Valore di default | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
byte | 8 bit | Variabile con segno (con rappresentazione “two’s complement”, complemento a due) e rappresenta valori in un range [-128 e 127] (estremi inclusi) |
0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
short | 16 bit | Numeri interi (con segno) in un range [-32,768, 32,767] |
0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
int | 32 bit | Numeri interi (per default con segno, signed) in un range [-231, 231-1] . Con Java 8 è stata introdotta la possibilità di utilizzare gli int per rappresentare quantità unsigned che potranno avere range [0, 232-1] (grazie ad appositi metodi statici introdotti nelle classi Integer e Long) |
0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
long | 64 bit | Numeri interi (per default con segno, signed) in un range [-263, 263-1] . Come per gli interi in Java 8 esiste la possibilità di utilizzarli come quantità unsigned con range (positivo) che arriva fino a 264-1 . |
0L |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
float | 32 bit | Numeri in virgola mobile in singola precisione secondo la specifica IEEE 754, utilizzando la rappresentazione segno, mantissa esponente.(-1)segno * mantissa * 2esponente |
0.0f |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
double | 64 bit | Numeri in virgola mobile in doppia precisione secondo la specifica IEEE 754. La precisione con cui vengono rappresentati i numeri aumenta in virtù dell’aumento del numero di bit utilizzati. | 0.0d |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
boolean | non specificato, ma sarebbe sufficiente un solo bit | serve a rappresentare solamente 2 valori: vero o falso (true o false ). |
false |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
char | 16 bit | È utilizzato per la memorizzazione di caratteri del charset Unicode) nel range ['\u0000', '\uffff'] (in esadecimale) o equivalentemente [0,65535] . |
\u0000 |
Esercizio
/* dichiaro tre tipi di variabili diverse per testare il loro funzionamento
*
* eseguo in seconda istanza il seguente esercizio per testare il funzionamento
* del ciclo while
*
* a) stampo i numeri da 1 a 10 e
* b) stampo i numero da 1 a 20 e raggiunto il 20 continuo a stampare in maniere
* decrescente da 20 a 1
* c) stampo i numeri dispari tra 1 e 100
* d) stampo i numeri da 1 a 100 evidenziando il numeri multipli di 25
* e) stampo i numeri da 1 a 100 in maniera consecutiva su una sola riga evidenziando i
* multipli di 100
* f) stampo i numeri da 100 a 1 evidenziando i multipli di 7
*
*
*/
public static void main(String[] args) {
// byte gestisce i numero da -128 +127
// int char
byte a;
a=-128;
//System.out.println(a);
//abbiamo testato che il numero gestito da byte
// va da -128 a +127
int b;
b=+2147483647;
// System.out.println(b);
char c;
c=’@’;
int contatore=0;
while(contatore<=1000)
{
System.out.print(contatore + ” “);
System.out.print(c);
contatore++;
}
}
}
risorse online sull’argomento:
http://www.di-srv.unisa.it/professori/masucci/LPII-0405/slides/Lez03.pdf