Casting in Java

Prima di procedere con gli operatori, che vedremo nella prossima sezione, è fondamentale trattare il concetto di casting. Dato che Java è un linguaggio tipato, non siamo liberi di assegnare […]

Avatar di gbfactory
gbfactory 3 Novembre 2020

Prima di procedere con gli operatori, che vedremo nella prossima sezione, è fondamentale trattare il concetto di casting.

Dato che Java è un linguaggio tipato, non siamo liberi di assegnare qualsiasi tipo di dato a qualsiasi tipo di variabile, per esempio, una variabile int non può contenere la stringa "ciao".

Il casting consiste nel forzare un valore di un determinato tipo ad assumere un tipo diverso e poter essere memorizzato in una variabile di tipo diverso.

Per esempio, se abbiamo un valore intero 3 e vogliamo salvarlo in una variabile di tipo float, dovremo effettuare un casting da int a float:

float numero = (float) 3;

In Java ci sono due tipi di casting, il primo è il Casting di Ampliamento, che converte un tipo di dato minore in un tipo di dato maggiore: byte -> short -> char -> int -> long -> float -> double. Questo tipo di casting è automatico, quindi non è necessario specificare tra parentesi tonde come abbiamo visto nel primo esempio.

int numIntger = 8;
double numDouble = numInger; // <-- casting automatico

System.out.println(numInger);   // Stampa 8
System.out.println(numDobule);  // Stampa 8.0

Il secondo tipo di è il Casting Restringente, che converte un tipo di dato largo in uno più stretto: double -> float -> long -> int -> char -> short -> byte. Questo casting, al contrario del primo, è manuale, il che significa che dobbiamo necessariamente specificare, tra parentesi, il tipo in cui vogliamo convertire il nostro dato:

double numDouble = 8.3;
int numIntero = (int) numDouble; // <-- casting manuale

System.out.println(numDobule);   // Stampa 8.3
System.out.println(numInger);    // Stampa 8