Come convertire stringhe in numeri e viceversa in Java

In genere in un'interfaccia utente grafica, ci saranno campi di testo che si aspettano che l'utente inserisca un valore numerico. Questo valore numerico finirà in un oggetto String che non aiuta davvero il tuo programma se vuoi fare un po 'di aritmetica. Fortunatamente, ci sono classi wrapper che forniscono metodi per convertire quei valori String in numeri e la classe String ha un metodo per riconvertirli di nuovo.

Classi wrapper

I tipi di dati primitivi che si occupano di numeri (ovvero byte, int, double, float, long e short) hanno tutti equivalenti di classe. Queste classi sono note come classi wrapper in quanto prendono un tipo di dati primitivo e lo circondano con la funzionalità di una classe. Ad esempio, la classe Double avrà un doppio valore come dati e fornirà metodi per manipolarlo.

Tutte queste classi wrapper hanno un metodo chiamato valueOf. Questo metodo accetta una stringa come argomento e restituisce un'istanza della classe wrapper. Ad esempio, supponiamo di avere una stringa con il valore di dieci:

Numero stringa = "10";

Avere questo numero come stringa non ci è utile, quindi usiamo la classe Integer per convertirlo in un oggetto Integer:

Numero intero convertitoNumero = Integer.valueOf (numero);

Ora il numero può essere usato come numero e non come stringa:

converterNumber = ConvertNumber + 20;

Puoi anche fare in modo che la conversione vada direttamente a un tipo di dati primitivo:

int convertNumber = Integer.valueOf (number) .intValue ();

Per altri tipi di dati primitivi, basta inserire la classe wrapper corretta-Byte, Integer, Double, Float, Long Short.

Nota: È necessario assicurarsi che la stringa possa essere analizzata nel tipo di dati appropriato. In caso contrario, si verificherà un errore di runtime. Ad esempio, cercando di convertire "dieci" in un numero intero:

Numero stringa = "dieci";
int convertNumber = Integer.valueOf (number) .intValue ();

produrrà una NumberFormatException perché il compilatore non ha idea che "dieci" dovrebbe essere 10.

Più sottilmente lo stesso errore si verificherà se si dimentica che un 'int' può contenere solo numeri interi:

Numero stringa = "10.5";
int convertNumber = Integer.valueOf (number) .intValue ();