09 Cast – cambiare tipo ad una variabile

Cosa vuol dire fare un cast? O in gergo informatico “castare una variabile”?
Significa cambiare momentaneamente il tipo della variabile.
Partiamo con un esempio per chiarirvi le idee:

String s="5", somma_stringa;
int a=3, somma_intera;
somma_intera=a+Integer.parseInt(s);//somma_intera=8
somma_stringa=a+s;//somma_stringa="35"

Nella riga 3 trasformiamo la stringa s in un intero e facciamo la somma tra due interi.
Nella riga 4 trasformiamo l’intero a in una stringa (il cast in stringa è automatico) e facciamo quindi una somma di stringhe, cioè un concatenamento.
A cosa serve castare una variabile?
Per diversi motivi. Primo tra tutti vedremo che i valori delle variabili che andremo a leggere da tastiera o stampare da video devono necessariamente essere di tipo string, quindi sarà necessario castarli se vogliamo che il valore letto da tastiera sia un intero, ad esempio.
Attenzione!
Non è possibile effettuare qualsiasi tipo di cast e inoltre eseguire certi cast comporterà la perdità di dati.
Tipi di cast
Adesso vi spiegherò come fare i cast di variabili da un tipo all’altro tenendo conto solo delle tipologie presentate nell’articolo 03 – Variabili.
Prima vediamo i principali cast possibili e sotto un esempio per chiarire le idee.

  • DA NUMERO A NUMERO: è sempre possibile fare cast da un tipo all’altro nelle quattro classi int, long, float, double, ma dovete stare attenti a due cose: se passate da un int/long ad un float/double verranno eliminate le cifre decimali del vostro numero; secondo, dovete stare attenti alle dimensioni dei numeri che castate perché le quattro classi hanno dei range diversi. Pensate che siano come delle scatole con le seguenti dimensioni: int<long<float<double; un int entrerà sempre in un double ma un double potrebbe essere troppo grande per diventare un int.
    Per fare questo tipo di cast è sufficiente porre (tipo)variabile dove tipo sarà la nuova tipologia che vogliamo assegnare a variabile.
  • DA QUALSIASI TIPO A STRING: qualsiasi variabile può sempre essere castata in una stringa senza alcun vincolo o problema.
    Per fare questo tipo di cast basta fare variabile+”” e variabile (quasiasi tipo esso sia) verrà trattata come una stringa.
  • DA STRING A NUMERO: è possibile solo se la stringa rappresenta solo cifre.
    Per eseguire questo tipo di cast si scrive classenumero.parseclassenumero(variabile)
  • DA STRING A CHAR: è possibile trasformare un singolo carattere di una stringa in un char attraverso l’istruzione stringa.charAt(carattere i-esimo della stringa che vuoi trasformare in char)
  • DA CHAR A NUMERO e DA NUMERO A CHAR: è possibile in entrambi i modi e avviene in maniera automatica senza bisogno di particolari comandi.

Vediamo infine un po’ di esempi che faranno chiarezza:

String s=10;
double d=15.5;
Int n=10;
char c='A';
boolean b=true;
String s2=b+"-"+d;//s2="true-15.5"
Int n2=(int)d+Integer.parseInt(s);//n2=25
Int n3=c;//n3=65
char c2=66;//c='B'
double d2=n;//d2=10
char c3="stringa".charAt(0);//c3='s'


Se avete qualche dubbio cosa aspettate? Chiedete nei commenti e sarà felice di rispondervi!

Alla prossima!

Please follow and like us: