1. Perché serve la conversione dei tipi?
Java è un linguaggio fortemente tipizzato. Se il computer ha una «scatolina» per un numero, provare a infilarci del testo è più o meno come cercare di inserire una forchetta in una porta USB. Il compilatore non te lo perdonerà! 😡
Tuttavia, nella pratica lavoriamo spesso contemporaneamente con diversi tipi di dati. Per esempio, hai una stringa che contiene un numero. È qui che serve la conversione (o trasformazione) dei tipi.
Consideriamo un esempio. Supponiamo tu voglia memorizzare il numero di utenti:
int a = 1;
int b = "2";
int c = "tre";
Il compilatore dirà subito: «Per chi mi hai preso? Non so convertire automaticamente una stringa in un numero, non senza il tuo aiuto. Devi convertire esplicitamente la stringa in numero».
In Java esistono diversi modi di conversione, e ognuno ha i propri pro e contro e le tipiche insidie.
2. Convertire int in String
Nel nostro lavoro serve spesso ottenere la rappresentazione testuale di un numero: ad esempio per stamparlo a schermo, salvarlo su file, inviarlo in rete, unirlo a del testo, ecc. In Java esistono diversi modi per farlo, ciascuno comodo in situazioni diverse.
Metodo String.valueOf()
Questo è il modo principale e più diffuso:
int number = 42;
String str = String.valueOf(number); // str == "42"
String.valueOf() converte un numero in una stringa che rappresenta il valore dell’oggetto passato al metodo.
Concatenazione con stringa vuota
Un metodo vecchio ma funzionante:
int number = 42;
String str = "" + number;
Questo approccio è rapido per i casi semplici, ma è meno esplicito per chi legge il codice.
3. Conversione implicita in stringa
Come già detto sopra, i creatori di Java hanno fatto in modo che tutte le variabili, gli oggetti e le espressioni in Java possano essere convertiti al tipo String.
Inoltre, ciò avviene automaticamente quando sommiamo il tipo String con qualche altro tipo. Esempi:
int a = 5;
String name = "Anna" + a; // name contiene la stringa Anna5
int a = 5;
String city = a + "New York" + a; // city contiene la stringa 5New York5
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; // message contiene la stringa Hello! 10Yo
In tutti e tre gli esempi abbiamo concatenato tranquillamente variabili di tipo int e String, e il risultato è sempre stato di tipo String.
Esempi:
int a = 5;
String name = "1" + a; // name contiene la stringa 15
int a = 5;
String city = a + "9" + a; // city contiene la stringa 595
int number = 10;
String code = "10";
String message = "" + number + code; // message contiene la stringa 1010
L’operazione di addizione viene eseguita da sinistra a destra, quindi il risultato può essere un po’ inatteso. Esempio:
int a = 5;
String name = a + a + "1" + a; // name contiene la stringa 1015
Ordine di esecuzione: ((a + a) + "1") + a
4. Conversione di una stringa in numero
Per convertire un numero in stringa in Java, basta concatenarlo con una stringa vuota:
String str = "" + chislo;
E cosa fare se occorre convertire una stringa in un numero? Non ogni stringa può essere convertita. Ma se la stringa è composta solo da cifre, allora si può. Per questo, in Java esiste un metodo specifico.
Il comando è il seguente:
int x = Integer.parseInt(stroka);
Dove int x è la dichiarazione della variabile intera x, e stroka è un numero fornito come stringa (una stringa composta da cifre).
Esempi:
String str = "123";
int number1 = Integer.parseInt(str); // number1 contiene il numero 123;
int number2 = Integer.parseInt("321"); // number2 contiene il numero 321
int number3 = Integer.parseInt("321" + 0); // number3 contiene il numero 3210
int number4 = "321"; // Non compila: la variabile è di tipo int, ma il valore è di tipo String
Funziona anche con i valori negativi: il metodo Integer.parseInt() gestisce anche il segno.
GO TO FULL VERSION