1. Integer
osztály
Integer
abban 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 Integer
osztá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 |
---|---|
|
int A típus lehetséges maximális értéke |
|
A int típus minimális lehetséges értéke |
Néha a lehető legkisebb vagy legnagyobb értéket szeretné hozzárendelni int
egy 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 Integer
osztá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. Double
osztály
Általánosságban elmondható, hogy az Double
osztály hasonló az osztályhoz, csak egy nem egy -et Integer
burkol . Vannak olyan területei és módszerei is, amelyek érdekelni fognak minket. Nézzünk meg néhányat közülük:double
int
Az Double
osztá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 double típus minimális lehetséges értéke |
|
double A 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ó double
nullá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.10x
2x
1
MIN_EXPONENT == -1024
, ami azt jelenti , , ami megközelítőleg egyenlő2-1024
10-308
És persze az Double
osztá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. Character
osztály
Az Character
osztá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. Boolean
osztály
A Boolean
típus gyakorlatilag megegyezik a boolean
tí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 Boolean
tí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 Boolean osztá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 boolean
tí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 Boolean
objektumra, 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)
Boolean
Mé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 Integer
egy -re alakítjuk int
:
Hogyan van megírva | Hogyan működik |
---|---|
|
|
Ha összehasonlít két Integer
objektumot egymással, akkor azok nem konvertálódnak int
s-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 == c
a != b
a
b
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 Integer
objektum . Az objektumok gyorsítótárazottan tárolják az értékeket a befogadáson -128
keresztül 127
.
Az Integer
osztá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 Integer
objektum 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
. Boolean
A típus esetében mind az értéke, TRUE
mind FALSE
az értéke állandó, tehát lényegében gyorsítótárban is vannak.