Typicky v a grafické uživatelské prostředí, budou existovat textová pole, která očekávají, že uživatel zadá číselnou hodnotu. Tato hodnota čísla skončí v a Tětiva objekt, který opravdu nepomůže vašemu programu, pokud chcete udělat aritmetiku. Naštěstí existují třídy wrapperů, které poskytují metody pro převod těchto hodnot String na čísla a třída String má metodu, jak je znovu převést.
Třídy obalů
primitivní datové typy které se zabývají čísly (tj. byte, int, double, float, long a short), všechny mají ekvivalenty třídy. Tyto třídy se nazývají třídy wrapperů, protože berou primitivní datový typ a obklopují jej funkcemi třídy. Třída Double bude mít například jako data dvojnásobnou hodnotu a bude poskytovat metody pro manipulaci s touto hodnotou.
Všechny tyto třídy obálky mají metodu nazvanou valueOf. Tato metoda bere String jako argument a vrací instanci třídy wrapper. Řekněme například, že máme řetězec s hodnotou deset:
Číslo řetězce = "10";
Mít toto číslo jako řetězec není pro nás k ničemu, takže pomocí třídy Integer je převedeme na objekt Integer:
Celé číslo převedenoNumber = Integer.valueOf (číslo);
Nyní lze číslo použít jako číslo, nikoli jako řetězec:
převedeno číslo = převedeno číslo + 20;
Také můžete převést přímo na primitivní datový typ:
int convertNumber = Integer.valueOf (number) .intValue ();
U ostatních primitivních datových typů stačí slot ve správné třídě wrapperů - Byte, Integer, Double, Float, Long Short.
Poznámka: Musíte se ujistit, že řetězec může být analyzován na příslušný datový typ. Pokud se vám to nepodaří, skončí s chybou runtime. Například, pokusit se zakrýt “deset” do celého čísla:
String number = "ten";
int convertNumber = Integer.valueOf (number) .intValue ();
bude produkovat NumberFormatException, protože kompilátor netuší, že „deset“ má být 10.
Podrobněji stejná chyba nastane, pokud zapomenete, že 'int' může pojmout pouze celá čísla:
Číslo řetězce = "10,5";
int convertNumber = Integer.valueOf (number) .intValue ();
Kompilátor nezkrátí číslo, jen si bude myslet, že se nevejde do 'int' a že je čas hodit NumberFormatException.
Převod čísel na řetězce
Chcete-li vytvořit číslo do řetězce, následuje stejný druh vzoru jako třída String má metodu valueOf. Jako argument může brát kterékoli z primitivních čísel datového typu a vytvořit řetězec:
int numberTwenty = 20;
Převeden řetězec = String.valueOf (numberTwenty);
což dává hodnotu „20“ jako hodnotu String co nverted.
nebo můžete použít metodu toString u kterékoli třídy tříd:
Převeden řetězec = Integer.toString (numberTwenty);
Metoda toString je společná pro všechny typy objektů - většinou jde pouze o popis objektu. U tříd obálky je tento popis skutečnou hodnotou, kterou obsahují. V tomto směru je konverze o něco robustnější. Pokud měla být použita třída Double místo Integer:
Převeden řetězec = Double.toString (numberTwenty);
výsledek by nezpůsobil a chyba runtime. Převedená proměnná by obsahovala řetězec „20.0“.
Existuje také jemnější způsob, jak převádět čísla, když jste zřetězené řetězce. Pokud měl být řetězec postaven jako:
String aboutDog = "Můj pes je" + numberTwenty + "years old.";
převod int numberTwenty se provede automaticky.