Lezione di Java 11 – Tipi primitivi

Indice Lezione PrecedenteLezione Successiva

In Java esistono otto tipi primitivi: boolean, char, byte, short, int, long, float, double

Boolean

Il tipo boolean serve per valutare le condizioni e può assumere due valori: true e false. Non è consentito cast (vedremo più avanti) tra valori logici e interi.
Esempio:

boolean ok = true;


Char

Rappresentano un singolo carattere Unicode (16 bit). I litterali di questo tipo sono inclusi tra apici singoli (‘ ‘). Ricordiamo che le stringhe non sono un tipo primitivo, sono una classe.
Esempi:

'a' // La lettera a
'\n' // Nuova linea



Tipi interi

Molto utilizzati, si possono esprimere in tre forme: decimale (es. 2), ottale (074) ed esadecimale(0xABFC).

byte 8 bit
short 16 bit
int 32 bit
long 64 bit

Il valore di default è di fondamentale importanza, nel caso degli interi è il tipo di default è int.
Vediamo qualche esempio:

byte a = 10; // Ok, rientra nel range dei byt (-2^8; +2^8-1, ovvero
//-128; +127)
byte b = 100; // Ok, stesso motivo
byte c = 100 + 10; // Ok, stesso motivo
byte d = 100 + 100; // Errore di compilazione, usciamo dal range


Come abbiamo detto, per i tipi interi il valore di default è il tipo int. Se il compilatore incontra un’operazione costituita da soli litterali (valori numerici) li calcola, come si può vedere dagli esempi. Se invece il compilatore incontra delle variabili, come si comporta?

byte e = 100 + a; // Errore di compilazione
byte f = a + b; // Errore di compilazione
int g = 1000000 * 1000000 // Nessun errore, ma valori sballati in esecuzione

perchè? E’ semplice, dato che siamo a tempo di compilazione il compilatore non conosce il valore contenuto nelle variabili (saremmo a tempo di esecuzione altrimenti), se incontra un’operazione con delle variabili assume che il tipo risultante dell’operazione sia di tipo int. Nel nostro caso dopo aver fatto “100 + a” e “a + b” il compilatore si trova a dover salvare questo risultato in una variabile di tipo byte con conseguente perdita di informazioni!
Nell’ultimo esempio succede la stessa cosa, il compilatore vede che c’è un’operazione, si aspetterà un tipo intero come risultato,lo trova nella variabile g e quindi non segnala nessun errore, in esecuzione però avremo dei valori sballati dato che il valore risultante dell’operazione è troppo grande e c’è perdita di informazione senza nessuna segnalazione.

Virgola mobile

Questo tipo di primitivi servono a memorizzare in memorie valori numerici con la virgola. Si utilizzare il suffisso F o f per litterali di tipo float; D o d per i litterali di tipo double. Hanno come tipo di default il tipo double.

Lunghezza Tipo
float 32 bit
double 64 bit

Esempi:

1.45 un semplice valore a virgola mobile (double).
1.45F un semplice float.

Potrebbe essere necessario trasformare i tipi primitivi in oggetti, Java quindi mette a disposizione le cosiddette classi Wrapper. Questo tipo di classi non fanno altro che “avvolgere” il tipo primitivo in un oggetto:

int i = 10;
Integer indice = new Integer(i);

essendo un oggetto, bisogna utilizzare dei metodi per potervi accedere, ad esempio il metodo intValue() restituisce il valore di un oggetto di tipo Integer.


Tipi reference

Non sono dei tipi primitivi ma hanno un ruolo fondamentale, tutti i tipi non primitivi sono tipi reference. Una variabile di tipo reference non è altro che un puntatore ad un oggetto (già li abbiamo visti, nell’esempio la variabile “a” è di tipo reference: Persona a = new Persona()). In altre parole, un tipo reference è una variabile che contiene un indirizzo di memoria, alla cella di memoria puntata è memorizzato l’oggetto.

Ti piace l’articolo?
Diventa fan su Facebook
Indice Lezione PrecedenteLezione Successiva
Pubblicato in Guide, Guide, Java, Programmazione Taggato con: , , , ,
2 comments on “Lezione di Java 11 – Tipi primitivi
  1. Angelo scrive:

    Ottimo tutorial, solo una correzione (ovviamente una svista) nel paragrafo dei tipi interi in quanto nel valore ottale non ci può essere il numero 8 cit. “Molto utilizzati, si possono esprimere in tre forme: decimale (es. 2), ottale (084) ed esadecimale(0xABFC)”.

  2. Alex88na scrive:

    grazie per la segnalazione! 🙂

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*