Lezione di Java 14 – Casting implicito ed esplicito

Indice Lezione PrecedenteLezione Successiva


Le operazioni di cast sono fondamentali in ogni linguaggio di programmazione, così come nei linguaggi più diffusi, anche in Java esistono le conversioni di tipo che vengono fatte automaticamente ed altre che richiedono un cast esplicito. Con il termine cast si intende l’operazione di passaggio di una variabile da un tipo di dato ad un altro. Su questo argomento Java non differisce molto dal C, vediamo lo schema di conversione dei casting che possono avvenire in maniera esplicita:

Casting Esplicito Java

Se c’è un percorso (basta seguire il verso delle frecce) nel grafo viene fatto un casting implicito, ovvero è possibile evitare di scrivere il cast, verrà inserito dal compilatore automaticamente. Si può notare che il tipo boolean non fa parte del grafo, ciò significa che il tipo boolean non può essere mai convertito. Per i litterali interi, ovvero i numeri veri e propri, che rientrano nel range di valore è possibile evitare di scrivere un casting esplicito.

Esempi:

byte a = 5; // 5 rientra nel range di tipo byte, è quindi possible evitare di scrivere il casting esplicito.
int b = a; // Esiste un percorso nel grafo da a a b quindi non c'è bisogno di un casting esplicito
int c = 5;
long d = c; // Errore, non è un litterale c
float c = 1.45; // Errore, sono per i litterali interi

Se non esiste un percorso nel grafo proposto, dobbiamo fare un casting esplicito (con probabile perdita di dati). Esempi:

int a = 5;
byte b = a; // Errore, non esiste un percorso nel grafo
byte c = (byte) a; // Ok, non c'è neanche perdita di dati
byte d = (byte) 1000 // Ok, ma con perdita di dati (1000 non rientra nel range del tipo byte)

Promozione aritmetica

In una espressione aritmetica, le variabili sono automaticamente promosse ad una forma più estesa per non causare perdita di informazioni. Se uno degli operandi è byte, float o char il risultato gli operandi vengono trasformati in tipo int (tranne con l’operatore ++ e –); se uno dei due operanti è double anche l’altro viene trasformato in double; se uno dei due è float anche l’altro viene trasformato in float; stesso discorso per il tipo long; altrimenti vengono trasformati in int.

Nella prossima lezione ci occuperemo degli enunciati branch e loop in Java.

Ti piace l’articolo?
Diventa fan su Facebook
Indice Lezione PrecedenteLezione Successiva
Pubblicato in Guide, Guide, Java, Programmazione Taggato con: , , , ,

Lascia un commento

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

*