CodeGym /Corsi /JAVA 25 SELF /Conversione tra tipi di dati

Conversione tra tipi di dati

JAVA 25 SELF
Livello 2, Lezione 3
Disponibile

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.

Importante! Non si possono eseguire operazioni aritmetiche con il tipo String. Anche se la stringa è composta solo da cifre.

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);
Conversione di una stringa in un numero

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.

1
Compito
JAVA 25 SELF, livello 2, lezione 3
Bloccato
Codice di accesso 🔑
Codice di accesso 🔑
1
Compito
JAVA 25 SELF, livello 2, lezione 3
Bloccato
Numero del volo ✈️
Numero del volo ✈️
1
Compito
JAVA 25 SELF, livello 2, lezione 3
Bloccato
Anno di uscita del film 🎞️
Anno di uscita del film 🎞️
1
Compito
JAVA 25 SELF, livello 2, lezione 3
Bloccato
Somma dei punteggi nel gioco 🕹️
Somma dei punteggi nel gioco 🕹️
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION