Tipicamente in a Interfaccia grafica utente, ci saranno campi di testo che prevedono che l'utente inserisca un valore numerico. Questo valore numerico finirà in a Corda oggetto 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.
Classi wrapper
Il 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 ();
Il compilatore non troncherà il numero, penserà solo che non si adatta a un 'int' e che è ora di lanciare un NumberFormatException.
Conversione di numeri in stringhe
La creazione di un numero in una stringa segue lo stesso tipo di modello della classe String ha anche un metodo valueOf. Può prendere uno qualsiasi dei numeri di tipo di dati primitivi come argomento e produrre una stringa:
int numberTwenty = 20;
String convert = String.valueOf (numberTwenty);
che mette "20" come valore String di coverted.
oppure puoi usare il metodo toString di una qualsiasi delle classi wrapper:
String convertito = Integer.toString (numberTwenty);
Il metodo toString è comune a tutti i tipi di oggetto, il più delle volte è solo una descrizione dell'oggetto. Per le classi wrapper, questa descrizione è il valore effettivo che contengono. In questa direzione, la conversione è un po 'più robusta. Se si dovesse usare la classe Double anziché l'Integer:
String convertita = Double.toString (numberTwenty);
il risultato non provocherebbe a errore di runtime. La variabile convertita conterrebbe la stringa "20.0".
C'è anche un modo più sottile per convertire i numeri quando lo sei Stringhe concatenanti. Se una stringa dovesse essere costruita come:
String aboutDog = "Il mio cane ha" + numberTwenty + "anni.";
la conversione del numero intTwenty viene eseguita automaticamente.