De obicei într-o interfață grafică de utilizator, vor exista câmpuri de text care se așteaptă ca utilizatorul să introducă o valoare numerică. Această valoare a numărului va ajunge în a Şir obiect care chiar nu ajută programul dvs. dacă doriți să faceți niște aritmetică. Din fericire, există clase de înveliș care furnizează metode pentru a converti acele valori String în numere, iar clasa String are o metodă pentru a le converti din nou.
Clase Wrapper
tipuri de date primitive care se ocupă de numere (adică, byte, int, double, float, lung și scurt) toate au echivalente de clasă. Aceste clase sunt cunoscute sub numele de clase de înveliș, deoarece iau un tip de date primitiv și îl înconjoară cu funcționalitatea unei clase. De exemplu, clasa Double va avea o valoare dublă ca date și va furniza metode pentru manipularea respectivei valori.
Toate aceste clase de înveliș au o metodă numită valueOf. Această metodă ia o stringă ca argument și returnează o instanță a clasei de înveliș. De exemplu, să zicem că avem o șiruri cu valoarea de zece:
Numărul șirului = "10";
Având acest număr ca String nu ne este de folos, așa că folosim clasa Integer pentru a o transforma într-un obiect Integer:
Integer convertNumber = Integer.valueOf (număr);
Acum, numărul poate fi folosit ca număr și nu ca șir de caractere:
convertedNumber = convertitNumăr + 20;
Puteți, de asemenea, să faceți conversia directă către un tip de date primitiv:
int convertNumber = Integer.valueOf (număr) .intValue ();
Pentru alte tipuri de date primitive, trebuie doar să faceți slot în clasa corectă de înveliș: Byte, Integer, Double, Float, Short Short.
Notă: Trebuie să vă asigurați că șirul poate fi analizat în tipul de date adecvat. Dacă nu se poate, veți ajunge cu o eroare de execuție. De exemplu, încercarea de a ascunde „zece” într-un număr întreg:
Numărul șirului = „zece”;
int convertNumber = Integer.valueOf (număr) .intValue ();
va produce un NumberFormatException, deoarece compilatorul nu are idee că „zece” se presupune a fi 10.
Mai subtil, aceeași eroare va apărea dacă uitați că un „int” poate reține doar numere întregi:
Numărul șirului = "10.5";
int convertNumber = Integer.valueOf (număr) .intValue ();
Compilatorul nu va trunca numărul, va crede doar că nu intră într-un „int” și că este timpul să aruncați un NumberFormatException.
Convertirea numerelor în șiruri
Pentru a face un număr într-un String urmează același tip de model ca și clasa String are o metodă valueOf. Poate lua oricare dintre numerele de tipuri de date primitive ca argument și poate produce o șir:
număr intTwenty = 20;
String convertit = String.valueOf (numberTwenty);
care plasează „20” ca valoare String a co-inversatului.
sau puteți utiliza metoda toString a oricăreia dintre clasele de înveliș:
String convertit = Integer.toString (numărTwenty);
Metoda toString este comună tuturor tipurilor de obiecte - de cele mai multe ori este doar o descriere a obiectului. Pentru clasele de înveliș, această descriere este valoarea reală pe care o conțin. În această direcție, conversia este ceva mai robustă. Dacă clasa Double trebuia folosită în loc de Integer:
String convertit = Double.toString (numărTwenty);
rezultatul nu ar provoca a eroare de rulare. Variabila convertită ar conține șirul „20.0”.
Există, de asemenea, o modalitate mai subtilă de a converti numerele când ești corzile de concatenare. Dacă s-a construit un șir ca:
String aboutDog = "Câinele meu are" + numărTwenty + "ani.";
conversia numărului intTwenty se face automat.