1. Integerosztály
Integerabban is jó, hogy egy osztály, ami azt jelenti, hogy lehetnek benne mezők és metódusok. És természetesen vannak benne. Sokan közülük – több tucatnyian. Itt a legalapvetőbbeket vesszük figyelembe.
Az Integerosztálynak két mezője van, amelyek a típus maximális és minimális lehetséges értékét tartalmazzák int:
| Terület | Leírás |
|---|---|
|
intA típus lehetséges maximális értéke |
|
A inttípus minimális lehetséges értéke |
Néha a lehető legkisebb vagy legnagyobb értéket szeretné hozzárendelni integy változóhoz. Annak elkerülése érdekében, hogy a kód értelmezhetetlen állandókkal zsúfolt legyen, ezt nagyon egyértelműen leírhatja a következőképpen:
| Kód | Leírás |
|---|---|
|
|
Az Integerosztálynak van néhány érdekes módszere is. Itt vannak:
| Mód | Leírás |
|---|---|
|
Egy karakterláncot ad vissza, amely a szám hexadecimális reprezentációja |
|
Egy karakterláncot ad vissza, amely a szám bináris reprezentációja |
|
Egy karakterláncot ad vissza, amely a szám oktális reprezentációja |
|
Tárgyba csomagolja az intátadottatInteger |
|
Az átadott karakterláncból kapott számot adja vissza |
Korábban találkozott a statikus Integer.parseInt()módszerrel. Emlékezzünk vissza, hogyan működik:
int name = Integer.parseInt(string);
Ha egy számot (csak számjegyeket) tartalmazó karakterláncot adunk át a parseInt()metódusnak, akkor elemzi a karakterláncot, és visszaadja a benne lévő számot.
A többi módszer is hasznos. Például egyesek képesek egy átadott számot a szám bináris, oktális vagy hexadecimális reprezentációját tartalmazó karakterláncsá alakítani.
2. Doubleosztály
Általánosságban elmondható, hogy az Doubleosztály hasonló az osztályhoz, csak egy nem egy -et Integerburkol . Vannak olyan területei és módszerei is, amelyek érdekelni fognak minket. Nézzünk meg néhányat közülük:doubleint
Az Doubleosztálynak hat érdekes területe van:
| Terület | Leírás |
|---|---|
|
Negatív végtelen |
|
Pozitív végtelen |
|
Minimális lehetséges kitevő (2 x ) |
|
Maximális lehetséges kitevő (2 x ) |
|
A doubletípus minimális lehetséges értéke |
|
doubleA típus lehetséges maximális értéke |
végtelenség
Ha osztod -1.0-vel 0.0, negatív végtelent kapsz. Ha osztod 1.0-vel 0.0, pozitív végtelent kapsz. Nem csak osztható doublenullával, hanem tárolhatja is a műveletek eredményét.
Kitevője adouble
A kitevő megértése egyszerű. Belsőleg a kettős egy mantisszából és egy kitevőből áll. De itt a kitevő értéke nem , hanem . Így ha a kitevő -val nő , akkor a szám összértéke megduplázódik.10x2x1
MIN_EXPONENT == -1024, ami azt jelenti , , ami megközelítőleg egyenlő2-102410-308
És persze az Doubleosztálynak vannak érdekes módszerei:
| Mód | Leírás |
|---|---|
|
Egy karakterláncot ad vissza, amely a szám hexadecimális reprezentációja |
|
Ellenőrzi, hogy az átadott szám végtelen-e. |
|
Ellenőrzi, hogy az átadott szám megfelelő-eNaN |
|
Tárgyba csomagolja az doubleátadottatDouble |
|
Az átadott karakterláncból kapott számot adja vissza |
Érdekes módon van egy isInfinite()módszer, amely akkor tér vissza true, ha az átadott szám pozitív vagy negatív végtelen.
A isNaN()módszer hasonló – ellenőrzi, hogy az átadott szám-e NaN( Not-a-Number , egy speciális állandó, amely meghatározatlan értéket jelez).
3. Characterosztály
Az Characterosztály elsősorban a nagyszámú statikus segédprogramja miatt érdekes, amelyek segítségével ellenőrizhető, hogy a karakterek különböző kategóriákhoz tartoznak-e.
Példák
| Mód | Leírás |
|---|---|
|
Ellenőrzi, hogy egy karakter ábécé-e |
|
Ellenőrzi, hogy a karakter betű-e |
|
Ellenőrzi, hogy a karakter számjegy-e |
|
Ellenőrzi, hogy a karakter szóköz, sortörés vagy oldaltörés (kódok: 12, 13, 14) |
|
Ellenőrzi, hogy a karakter szóköz-e: szóköz, tabulátor stb. |
|
Ellenőrzi, hogy a karakter kisbetű-e |
|
Ellenőrzi, hogy a karakter nagybetű-e |
|
A karaktert kisbetűvé alakítja |
|
A karaktert nagybetűvé alakítja |
Ezeknek a módszereknek az a sajátossága, hogy az összes ismert ábécével működnek: az arab számokat számjegyekként osztályozzák stb.
4. Booleanosztály
A Booleantípus gyakorlatilag megegyezik a booleantípussal. A különbségek minimálisak.
Az alábbiakban az osztály egyszerűsített változatát mutatjuk be Boolean:
| Kód | Leírás |
|---|---|
|
Konstansok: TRUEи FALSE Változóosztály Boolean-konstruktor A metódus a belső változó értékét adja vissza Ez a statikus metódus konvertál true-ra TRUEés false-re FALSE. |
A Booleantípusnak két állandója van (két mező):
| Az osztály állandói | A logikai típus megfelelője | Leírás |
|---|---|---|
|
|
igaz |
|
|
hamis |
Ugyanúgy dolgozhat velük, mint a típussal boolean:
| Kód | jegyzet |
|---|---|
|
Az Booleanosztály az egyetlen osztály, amely egy feltételen belül írható |
|
Mindhárom változó egyenlő true/TRUE |
|
A konstansok összehasonlíthatók mindkettővel, equalsés == ez is működni fog. |
Az autobox itt remekül működik. Ez azt jelenti, hogy ezt a típust ugyanúgy használhatja, mint a booleantípust – nincsenek csapdák, amelyekre figyelni kell.
| Hogyan van megírva | Hogyan működik |
|---|---|
|
|
booleanÉs itt a és a típusok összehasonlítása Boolean:
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
Ha valóban szüksége van egy független Booleanobjektumra, akkor kifejezetten létre kell hoznia azt:
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
BooleanMég egy példa, ahol egy belsőt használunk if:
| Kód | jegyzet |
|---|---|
|
Ez össze fog állni és működni fog |
Ez lefordítja, de nem megy!
| Kód | jegyzet |
|---|---|
|
Hiba . Ez a sor kivételt jelent |
5. Értékek gyorsítótárazása az automatikus dobozolás során
Van néhány buktató az egész szám burkoló típusaival kapcsolatban.
Amint azt már tudod, ha összehasonlítunk egy -t intés egy -t Integer, akkor a -t Integeregy -re alakítjuk int:
| Hogyan van megírva | Hogyan működik |
|---|---|
|
|
Ha összehasonlít két Integerobjektumot egymással, akkor azok nem konvertálódnak ints-re:
| Kód | Konzol kimenet |
|---|---|
|
|
a == cés , de , mert amikor összehasonlítunk és összehasonlítunk hivatkozásokat. Amit lényegében elvárunk.b == ca != bab
Meglepetés
De ha lecseréljük 500-ra 100, akkor teljesen más eredményt kapunk:
| Kód | Konzol kimenet |
|---|---|
|
|
A probléma itt az, hogy az automatikus dobozolás során nem mindig jön létre új Integerobjektum . Az objektumok gyorsítótárazottan tárolják az értékeket a befogadáson -128keresztül 127.
Az Integerosztálynak van egy rejtett tömbje, amely objektumokat tárol: Integer(-128), Integer(-127), ... Integer(126),Integer(127)
Ha ír Integer x = 128, akkor az autoboxing folyamat létrehoz egy új objektumot, de ha ír Integer x = 127, akkor az autoboxing folyamat lekéri a meglévő objektumot a gyorsítótárból (a tömbből).
Ha nem szeretné, hogy az Integerobjektum a gyorsítótárból származzon, akkor kifejezetten létre kell hoznia a következő írással:Integer x = new Integer(127);
Minden burkolótípus rendelkezik ilyen gyorsítótárral: Integer, Long, Byte, Short, Boolean. BooleanA típus esetében mind az értéke, TRUEmind FALSEaz értéke állandó, tehát lényegében gyorsítótárban is vannak.
GO TO FULL VERSION