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