I tipi di dato primitivi (parte 1)
I tipi di dato primitivi innanzi tutto non sono classi come la classe String che vi ho presentato la scorsa lezione. Infatti sono delle rappresentazioni ?costruite dentro? java (o se preferite ?built-in?), a differenza di String che ? una classe di ?libreria?.
I tipi di dato primitivi riguardano principalmente la rappresentazione dei numeri, ma ci sono anche le importanti eccezioni dei dati booleani (i valori di verit? true e false) e del tipo di dati che rappresenta i singoli caratteri (che la classe String usa per rappresentare le stringhe di testo).
Cominceremo questa carrellata dai dati numerici, che sono in numero di 6: int, short, long, byte, double e float. I primi 4 tipi sono delle diverse rappresentazioni dei numeri interi (senza virgola), mentre gli ultimi 2 sono rappresentazioni dei numeri reali (con la virgola). Ci? che cambia principalmente ? la dimensione della rappresentazione, ma a breve sar? tutto pi? chiaro.
Il tipo int ? una rappresentazione a 32 bit (4 byte) dei numeri interi, ci? ci permette di rappresentare tutti i numeri interi nell?intervallo [-2^31; 2^31 ? 1] (dove con 2^31 si intende ?2 elevato alla 31?), ci? significa che con int possiamo esprimere la bellezza di circa 4 miliardi di valori.
Il tipo short ? una rappresentazione a 16 bit (2 byte) dei numeri interi, ci? ci permette di rappresentare tutti i numeri interi nell?intervallo [-2^15; 2^15 ? 1] = [-32768; 32767].
Il tipo long ? una rappresentazione a 64 bit (8 byte) dei numeri interi, ci? ci permette di rappresentare tutti i numeri interi nell?intervallo [-2^63; 2^63 ? 1].
Il tipo byte ? una rappresentazione a 8 bit (1 byte) dei numeri interi, ci? ci permette di rappresentare tutti i numeri interi nell?intervallo [-2^7; 2^7 ? 1] = [-128; 127].
La scelta del tipo di dato per rappresentare i numeri interi dipende dal tipo di utilizzo che se ne fa, ? inutile sprecare 8 byte per usare long se non ci serve svariare in un range cos? ampio di valori. In genere int va bene per quasi tutte le applicazioni. Accanto alle operazioni canoniche (+, -, *, /) si affianca il calcolo del resto ?%? (voi mi direte: ?a che serve?? e io vi rispondo: ?serve, serve??), per esempio per calcolare il resto della divisione 14/3 si pu? usare il seguente codice:
int resto = 14 % 3;
resto varr? 2.
Ora passeremo in rassegna i tipi di dato per la rappresentazione dei numeri reali.
Il tipo float ? una rappresentazione a 32 bit dei numeri reali positivi e negativi, il minimo valore assoluto esprimibile con float ? dell?ordine di 10^(-38) e il massimo valore assoluto ? dell?ordine di 10^38. La precisione di questo tipo di dato ? dell?ordine delle 7 cifre decimali.
Il tipo double ? una rappresentazione a 64 bit dei numeri reali positivi e negativi, il minimo valore assoluto esprimibile con double ? dell?ordine di 10^(-308) e il massimo valore assoluto ? dell?ordine di 10^308. La precisione di questo tipo di dato ? dell?ordine delle 15 cifre decimali.
I tipi di dato che rappresentano i reali non hanno l?operazione del calcolo del resto e possono essere rappresentate in notazione scientifica (per esempio 3.14 pu? essere rappresentato in notazione scientifica usando il tipo float come 314E-2f ma in questo corso non ne faremo uso).
Per ci? che ci riguarda, useremo i numeri reali allo stesso modo di come useremo gli interi, quindi ci? che vedremo per gli interi sar? vero anche per i reali (quando non lo sar? lo far? notare).
Ora vi presento i tipo di dati boolean che rappresenta 2 valori: true per il valore vero, false per il valore falso. La sua dimensione ? di 1 bit e gli operatori sono 3: && (and) che realizza l?and logico (il risultato ? true se e solo se gli operatori sono true, altrimenti il risultato ? false), || (or) che realizza l?or logico (il risultato ? false se e solo se gli operatori sono entrambi false, altrimenti true) e ! (not) che realizza il not logico della variabile booleana (se la variabile vale true, allora il risultato sar? false e viceversa). Ripeto, gli unici valori possibili sono 2: true e false.
Il tipo di dati che rappresenta i caratteri ? char (a chi conosce C/C++ suoner? familiare). I valori possibili sono oltre 64000 e viene seguito lo standard Unicode (
http://www.unicode.org per chi vuol saperne di pi?) che fa corrispondere dei caratteri alfabetici ai numeri.
Il modo pi? semplice di dichiarare una variabile di tipo char ? tramite gli apici ? ? (diversamente da come si fa per le stringhe che usano apici doppi):
char carattere = ?c?;
Per quanto riguarda i numerici, ci sono molte operazioni gi? predefinite nelle librerie java nella classe Math, per esempio per calcolare la radice quadrata si pu? usare:
int rad = Math.sqrt(159.4);
Ci sono altre operazioni utili (come logaritmi, calcolo di valori assoluti, esponenziali?) per cui vi invito a guardare la documentazione.
In java sono molto frequenti le operazioni di incremento di una variabile e come in C ? definito l?operatore di postincremento:
int a = 0;
a++;
//ora a = 1
che corrisponde a:
int a = 0;
a = a + 1;
o a:
int a = 0;
a += 1;
dove += ? un?abbreviazione di a = a + ?..
Alla prossima lezione?