V tomto výukovém programu se na příkladech seznámíme s třídou Java Wrapper.
Obalu tříd v Javě slouží k převodu primitivní typy ( int
, char
, float
atd) do příslušných objektů.
Každý z 8 primitivních typů má odpovídající třídy obalů.
Primitivní typ | Obalová třída |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
Převeďte primitivní typ na obalovací objekty
valueOf()
Metodu můžeme také použít k převodu primitivních typů na odpovídající objekty.
Příklad 1: Primitivní typy k obalovým objektům
class Main ( public static void main(String() args) ( // create primitive types int a = 5; double b = 5.65; //converts into wrapper objects Integer aObj = Integer.valueOf(a); Double bObj = Double.valueOf(b); if(aObj instanceof Integer) ( System.out.println("An object of Integer is created."); ) if(bObj instanceof Double) ( System.out.println("An object of Double is created."); ) ) )
Výstup
Vytvoří se objekt Integer. Vytvoří se objekt Double.
Ve výše uvedeném příkladu jsme použili valueOf()
metodu k převodu primitivních typů na objekty.
Zde jsme použili instanceof
operátor ke kontrole, zda jsou vytvořené objekty jsou Integer
nebo Double
druhu, či nikoli.
Kompilátor Java však může přímo převést primitivní typy na odpovídající objekty. Například,
int a = 5; // converts into object Integer aObj = a; double b = 5.6; // converts into object Double bObj = b;
Tento proces se nazývá automatický box . Chcete-li se dozvědět více, navštivte autoboxing a unboxing prostředí Java.
Poznámka : Můžeme také převést primitivní typy na obálkové objekty pomocí Wrapper
konstruktorů tříd. Ale po Java 9 je použití konstruktorů zahozeno.
Zabalte objekty do primitivních typů
Pro převod objektů do primitivních typů, lze použít odpovídající metody hodnot ( intValue()
, doubleValue()
, atd), přítomný v každé třídě obálky.
Příklad 2: Zabalení objektů do primitivních typů
class Main ( public static void main(String() args) ( // creates objects of wrapper class Integer aObj = Integer.valueOf(23); Double bObj = Double.valueOf(5.55); // converts into primitive types int a = aObj.intValue(); double b = bObj.doubleValue(); System.out.println("The value of a: " + a); System.out.println("The value of b: " + b); ) )
Výstup
Hodnota a: 23 Hodnota b: 5,55
Ve výše uvedeném příkladu jsme použili metodu intValue()
and doubleValue()
k převodu objektů Integer
a Double
na odpovídající primitivní typy.
Kompilátor Java však může automaticky převádět objekty na odpovídající primitivní typy. Například,
Integer aObj = Integer.valueOf(2); // converts into int type int a = aObj; Double bObj = Double.valueOf(5.55); // converts into double type double b = bObj;
Tento proces se nazývá unboxing . Chcete-li se dozvědět více, navštivte autoboxing a unboxing prostředí Java.
Výhody tříd obalovačů
- V Javě někdy budeme muset použít objekty namísto primitivních datových typů. Například při práci se sbírkami.
// error ArrayList list = new ArrayList(); // runs perfectly ArrayList list = new ArrayList();
- Můžeme uložit hodnotu null v obalových objektech. Například,
// generates an error int a = null; // runs perfectly Integer a = null;
Poznámka : Primitivní typy jsou efektivnější než odpovídající objekty. Proto je-li požadována účinnost, vždy se doporučují primitivní typy.