1. Burkolattípusok listája
Tudja, hogy a Java-nak 8 primitív típusa van, amelyek nem osztályok. Egyrészt ez jó – egyszerűek és kevés helyet foglalnak el. Másrészt, néha az órákra éppen szükségünk van. A következő leckében megtudhatja, hogy pontosan miért.
Szóval mit lehet tenni?
A Java ötödik verziójától kezdve minden primitív típus kapott egy ikerosztályt. Minden ilyen osztály egyetlen mezőt tárol egy adott típusú értékkel. Ezeket az osztályokat wrapper típusoknak nevezzük , mivel primitív értékeket csomagolnak osztályokba.
Itt található ezeknek a típusoknak a listája. Tudsz valamit?
| Primitív típus | Burkolat osztály |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A primitív típusok nevei kisbetűvel kezdődnek, de a wrapper osztályok nevei nagybetűvel kezdődnek. Néhány osztálynév is kicsit hosszabb: Integerhelyett intés Characterhelyett char.
A wrapper osztályok összes objektuma megváltoztathatatlan ( változhatatlan ).
Az osztály egyszerűsített kódja Integerígy néz ki:
| Kód | jegyzet |
|---|---|
|
Változókonstruktor A metódus értéket ad vissza A statikus metódus új objektumot hoz létre egy változóhoz Integerint |
2. A konvertálása an int-raInteger
A wrapper típusok a primitív testvéreik megfelelőinek számítanak: könnyen létrehozhatunk egy primitív típusnak megfelelő burkoló objektumot.
Használjuk az int típust példaként annak elemzésére, hogy a primitív típusok hogyan hatnak egymásra a megfelelő burkolótípusokkal. A kód az an-ról intan-ra Integerés fordítva a következőképpen néz ki:
intAhhoz, hogy egy -et konvertálhasson Integer, meg kell írnia ezt a kódot:
Integer name = new Integer(value);
Ahol namea változó neve Integer, és valuea becsomagolt intérték.
Példák:
| Kód | jegyzet |
|---|---|
|
|
|
|
|
És az an konvertálásához Integermeg intkell írnia ezt a kódot:
int name = variable.intValue();
Ahol nameegy változó neve int, és variableegy objektumra való hivatkozás Integer.
Példák:
| Kód | jegyzet |
|---|---|
|
|
|
|
|
|
|
|
3. Autobox és unboxing
De még az egyszerű műveleteket sem Integerkönnyű megírni a típussal.
Mint korábban említettük, a Integertípus megváltoztathatatlan ( változhatatlan ). IntegerÚj értékkel rendelkező objektum létrehozásához intkifejezetten új objektumot kell létrehoznia Integer. Ennek ellenére könnyű megszerezni integy objektumban tárolt érték értékét Integer– csak hívja a intValue()metódust.
Példa:
| Kód | Leírás |
|---|---|
|
Becsomagolás 5egy Integerobjektumba Az érték lekérése az objektumból Hozzon Integerlétre egy új Integerobjektumot (egyenlő 10-zel) |
Ez elég nehézkes kód, nem gondolod?
A Java készítői így gondolták, ezért megtanították a fordítónak, hogyan kell ezeket a műveleteket automatikusan elvégezni. Az an- intnak automatikus konvertálását autoboxing-nakInteger ( az érték automatikus dobozba helyezése), a fordított műveletet (egy an- vá alakítását) unboxing- nak nevezzük .Integerint
| A kódod | Amit a fordító lát |
|---|---|
|
|
|
|
|
|
Az autoboxing és unboxing funkciónak köszönhetően biztonságosan hozzárendelhet egy intváltozóhoz Integerés fordítva. Bármilyen bonyolultságú kifejezést írhat anélkül, hogy különbséget tenne a intés Integertípusok között.
Példák:
| Kód | Amit a fordító generál |
|---|---|
|
|
|
|
4. A wrapper változók összehasonlítása
Az automatikus dobozolás és a kicsomagolás egyszerű és átlátható folyamatok. Szükség szerint használunk utasításokat, szükség szerint new Integer()hívjuk meg a metódust.intValue()
Minden szépen és egyszerűen működik Önnek, programozónak. Ne feledje, hogy ha egy és egy -t hasonlít össze , akkor az összehasonlítás referencia és nem értékek alapján történik.IntegerInteger
| Kód | Konzol kimenet |
|---|---|
|
|
|
|
A aés bváltozók nem tárolnak intértékeket. Tárolnak hivatkozásokat az objektumokra. Ez azt jelenti, hogy ne feledje, hogyan kell őket helyesen összehasonlítani:
| Rossz | Jobb |
|---|---|
|
|
GO TO FULL VERSION