Általában a grafikus felhasználói felület, olyan szövegmezők lesznek, amelyek elvárják, hogy a felhasználó numerikus értéket írjon be. Ez a számérték a végén lesz Húr objektum, amely nem igazán segít a programnál, ha számtani műveletet akar végezni. Szerencsére vannak olyan burkolóosztályok, amelyek módszereket biztosítanak ezeknek a karakterláncoknak a számainak konvertálására, és a karakterlánc osztálynak van módszere ismételt konvertálásra.
Csomagoló osztályok
Az primitív adattípusok amelyek a számokkal foglalkoznak (azaz bájt, int, dupla, úszó, hosszú és rövid), mindegyiknek van osztály-egyenértéke. Ezeket az osztályokat wrapper osztályoknak nevezzük, mivel primitív adattípust vesznek fel, és körülveszik az osztály funkcionalitásával. Például a Dupla osztály adatai kettős értékkel rendelkeznek, és módszereket biztosítanak az érték manipulálására.
Ezeknek a burkolóosztályoknak mindegyike rendelkezik a valueOf nevű módszerrel. Ez a módszer egy String-et vesz argumentumként, és visszaadja a wrapper osztály példányát. Tegyük fel például, hogy van egy tízértékű karakterlánc:
Karakterlánc száma = "10";
Ha ezt a számot karakterlánccal rendelkezzük, akkor nincs értelme számunkra, ezért az Egész osztályt arra használjuk, hogy egész szám objektummá alakítsuk:
Egész konvertált szám = Integer.valueOf (szám);
Most a szám használható számként, és nem karakterláncként:
convertedNumber = konvertált szám + 20;
Azt is megteheti, hogy a konverzió egyenesen primitív adattípusra menjen:
int konvertált szám = Integer.valueOf (szám) .intValue ();
Más primitív adattípusok esetén csak a megfelelő csomagoló osztályba illeszkedik - Byte, Integer, Double, Float, Long Short.
Jegyzet: Győződjön meg arról, hogy a karakterlánc elemezhető a megfelelő adattípusba. Ha nem tudja, akkor futásidejű hibát fog eredményezni. Például, ha megpróbáljuk "tíz" -et egész számba takarni:
Karakterlánc száma = "tíz";
int konvertált szám = Integer.valueOf (szám) .intValue ();
létrehoz egy NumberFormatException-et, mert a fordítónak fogalma sincs, hogy a "tíz" állítólag 10-es lesz.
Finomabb, hogy ugyanaz a hiba akkor fordul elő, ha elfelejti, hogy az 'int' csak egész számokat tartalmazhat:
Karakterlánc száma = "10,5";
int konvertált szám = Integer.valueOf (szám) .intValue ();
A fordító nem csonkolja le a számot, csak azt fogja gondolni, hogy nem fér bele az „int” -be, és itt az ideje, hogy dobja a NumberFormatException-t.
Számok konvertálása karakterláncokká
Ha számot karakterlánccá alakítunk, ugyanazt a mintázatot kövessük, mint a karakterlánc osztálynak egy valueOf módszere is. Bármely primitív adattípus számot felvehet argumentumként, és létrehozhat egy karakterláncot:
int számTwenty = 20;
Húros karakterlánc konvertálva = String.valueOf (számaTwenty);
amely a "20" -ot adja meg a co-érték megváltoztatásának String-értékeként.
vagy bármelyik csomagoló osztály toString módszerét használhatja:
Húros karakterlánc konvertálva = Integer.toString (számaTwenty);
A toString módszer minden objektumtípusra jellemző - legtöbbször csak az objektum leírása. A wrapper osztályok esetében ez a leírás az általuk jelentett tényleges érték. Ebben az irányban a konvertálás egy kicsit robusztusabb. Ha a kettős osztályt kellene használni az egész szám helyett:
Húros karakterlánc konvertálva = Double.toString (számaTwenty);
az eredmény nem okozna a Futtatási hiba. A konvertált változó a "20.0" karakterláncot tartalmazza.
Van még egy finomabb módszer a számok konvertálására, amikor Ön van összefűző húrok. Ha egy húrokat úgy kellene építeni, mint:
Karakterlánc aboutDog = "A kutyám" + huszonhárom éves ".";
az intwTwenty átalakítása automatikusan megtörténik.