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!
Commenti recenti