Salta ai contenuti

Conversione dei tipi

A volte hai un valore in un tipo, ma ti serve in un altro.

Per esempio:

  • leggi un numero come testo e vuoi usarlo per un calcolo
  • hai un int e vuoi salvarlo in un double
  • hai un double e vuoi prendere solo la parte intera

Questa operazione si chiama conversione di tipo.

Java permette alcune conversioni senza istruzioni speciali.

Per esempio, un int puo diventare un double:

int eta = 20;
double etaDecimale = eta;
System.out.println(etaDecimale);

Output:

20.0

Questa conversione e sicura: un numero intero puo essere rappresentato come numero decimale senza perdere informazione.

La conversione opposta non e automatica.

double prezzo = 12.90;
int prezzoIntero = prezzo; // errore

Java non vuole perdere la parte decimale senza che tu lo dica chiaramente.

Per farlo usi un cast:

double prezzo = 12.90;
int prezzoIntero = (int) prezzo;
System.out.println(prezzoIntero);

Output:

12

Il cast a int taglia la parte decimale. Non arrotonda.

Questo dettaglio e importante:

double media = 7.8;
int voto = (int) media;
System.out.println(voto);

Output:

7

La parte .8 sparisce.

Se vuoi arrotondare, usa un metodo apposito:

double media = 7.8;
long arrotondato = Math.round(media);
System.out.println(arrotondato);

Output:

8

Quando leggi input dall’utente o da un file, spesso i dati arrivano come testo.

Per trasformare una String in un int, usa Integer.parseInt:

String testo = "25";
int numero = Integer.parseInt(testo);
System.out.println(numero + 5);

Output:

30

Per un double, usa Double.parseDouble:

String testo = "12.50";
double prezzo = Double.parseDouble(testo);
System.out.println(prezzo * 2);

Output:

25.0

Se il testo non contiene un numero valido, Java segnala un errore.

String testo = "ciao";
int numero = Integer.parseInt(testo); // errore a runtime

"ciao" non puo diventare un numero intero.

Piu avanti vedremo come gestire questi casi con le eccezioni.

Per unire un numero a una stringa, spesso basta +:

int eta = 20;
String messaggio = "Eta: " + eta;
System.out.println(messaggio);

Output:

Eta: 20

Java converte il numero in testo per poter costruire la frase.

Chiediti sempre:

  • sto passando da un tipo piu piccolo a uno piu ampio?
  • rischio di perdere dati?
  • il testo contiene davvero un numero?

Se la conversione puo perdere informazione, Java ti chiede di essere esplicito. E una protezione, non un fastidio.