Paprastai a grafinė vartotojo sąsaja, bus teksto laukai, kuriuose vartotojas tikisi įvesti skaitinę reikšmę. Ši skaičiaus reikšmė bus a Stygos objektas, kuris nelabai padeda jūsų programai, jei norite atlikti aritmetiką. Laimei, yra įvyniojimo klasės, kurios pateikia metodus, kaip šias styginių reikšmes konvertuoti į skaičius, o styginių klasė turi metodą, kad vėl jas konvertuotų.
Apvyniojimų klasės
primityvūs duomenų tipai kurie nagrinėja skaičius (t. y. baitas, int, dvigubas, slankusis, ilgasis ir trumpasisis), visi turi klasės atitikmenis. Šios klasės yra žinomos kaip „wrapper“ klasės, nes jos priima primityvų duomenų tipą ir supa jas su klasės funkcionalumu. Pavyzdžiui, „Double“ klasės duomenys turės dvigubą reikšmę ir pateiks metodus, kaip manipuliuoti ta verte.
Visos šios įvyniojimo klasės turi metodą, vadinamą valueOf. Šis metodas priima eilutę kaip argumentą ir grąžina įvyniojimo klasės egzempliorių. Pvz., Tarkime, kad turime stygą, kurios vertė yra dešimt:
Styginių skaičius = "10";
Turėti šį numerį kaip eilutę mums nėra naudinga, todėl norėdami konvertuoti jį į sveikąjį objektą, naudojame „Integer“ klasę:
Sveikasis skaičius konvertuotasNumber = Sveikasis skaičius.valueOf (skaičius);
Dabar skaičius gali būti naudojamas kaip skaičius, o ne kaip eilutė:
konvertuotas skaičius = konvertuotas skaičius + 20;
Taip pat galite priversti konvertuoti tiesiai į primityvų duomenų tipą:
int convertedNumber = Integer.valueOf (number) .intValue ();
Kitiems primityviems duomenų tipams tereikia įvesti tinkamą aplanko klasę - baitas, sveikasis skaičius, dvigubas, plūduriuojantis, trumpas.
Pastaba: Turite įsitikinti, kad eilutę galima išanalizuoti į atitinkamą duomenų tipą. Jei to nepavyks padaryti, jums bus padaryta Klaida. Pvz., Bandymas uždengti „dešimt“ sveiku skaičiumi:
Styginių skaičius = "dešimt";
int convertedNumber = Integer.valueOf (number) .intValue ();
sukurs „NumberFormatException“, nes kompiliatorius neįsivaizduoja, kad „dešimt“ turėtų būti 10.
Subtiliau, ta pati klaida įvyks, jei pamiršite, kad „int“ gali laikyti tik sveikus skaičius:
Styginių skaičius = "10,5";
int convertedNumber = Integer.valueOf (number) .intValue ();
Kompiliatorius nesutrumpins skaičiaus, jis tiesiog pamanys, kad jis netelpa „int“ ir kad laikas mesti „NumberFormatException“.
Skaičių konvertavimas į stygas
Padarius skaičių į eilutę, laikomasi tokio paties modelio, kaip ir stygų klasėje yra „valueOf“ metodas. Kaip argumentą gali būti naudojamas bet kuris iš primityviųjų duomenų tipų skaičių ir sukuriama eilutė:
vidinis skaičiusDvidešimt = 20;
Stygos konvertuotos = String.valueOf (skaičiusTwenty);
kuris iškelia „20“ kaip eilutės reikšmę.
arba galite naudoti bet kurios iš įvyniojimo klasių metodą „toString“:
Eilutė konvertuota = sveikasis skaičius.į eilutę (skaičius dvidešimt);
„ToString“ metodas yra būdingas visiems objektų tipams - dažniausiai tai yra tik objekto aprašymas. Apvyniojimų klasėms šis aprašymas yra tikroji jų vertė. Šia kryptimi konvertavimas yra šiek tiek tvirtesnis. Jei vietoj sveikojo skaičiaus turėjo būti naudojama dviguba klasė:
Stygos konvertuotos = Double.toString (skaičiusTwenty);
rezultatas nesukeltų a Klaida. Konvertuotame kintamajame būtų eilutė „20.0“.
Taip pat yra subtilesnis būdas konvertuoti skaičius, kai esate sujungimo stygos. Jei styga turėjo būti pastatyta taip:
Styga aboutDog = "Mano šuo yra" + skaičiusDvidešimt + "metų.";
„int“ skaičiaus dvidešimt konvertavimas atliekamas automatiškai.