Selles õpetuses õpime näidete abil Java Wrapperi klassi kohta.
Ümbris klasside Java kasutatakse teisendada primitiivne tüüpi ( int
, char
, float
jne) vastavatesse objektid.
Kõigil kaheksast primitiivsest tüübist on vastavad ümbrisklassid.
Ürgne tüüp | Mähkmeklass |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
Teisendage primitiivne tüüp ümbrisobjektideks
Samuti võime valueOf()
meetodit kasutada primitiivsete tüüpide teisendamiseks vastavateks objektideks.
Näide 1: Ürgsed tüübid ümbriste objektidele
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äljund
Luuakse täisarvu objekt. Luuakse topeltobjekt.
Ülaltoodud näites oleme valueOf()
primitiivsete tüüpide objektideks teisendamise meetodit kasutanud .
Siin oleme kasutanud instanceof
operaator kontrollida, kas loodud objektid on Integer
või Double
tüübi või mitte.
Java kompilaator suudab aga primitiivsed tüübid otse vastavateks objektideks teisendada. Näiteks,
int a = 5; // converts into object Integer aObj = a; double b = 5.6; // converts into object Double bObj = b;
Seda protsessi nimetatakse autopoksiks . Lisateabe saamiseks külastage Java autoboxing ja unboxing.
Märkus . Klassikonstruktorite abil saame teisendada ka primitiivsed tüübid ümbrisobjektideks Wrapper
. Kuid konstruktorite kasutamine visatakse Java 9 järel kõrvale.
Pakkimisobjektid primitiivseteks tüüpideks
Teisendada esemeid primitiivne tüüpi, saame kasutada vastava väärtuse meetodeid ( intValue()
, doubleValue()
jne) esineb iga ümbris klassi.
Näide 2: Pakkimisobjektid primitiivseteks tüüpideks
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äljund
A väärtus: 23 väärtus b: 5,55
Eespool toodud näites, oleme kasutanud intValue()
ja doubleValue()
meetod teisendada Integer
ja Double
esemeid, mis vastab primitiivne tüüpi.
Kuid Java kompilaator suudab objektid automaatselt teisendada vastavateks primitiivseteks tüüpideks. Näiteks,
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;
See protsess on tuntud kui kasti tühistamine . Lisateabe saamiseks külastage Java autoboxing ja unboxing.
Pakendiklasside eelised
- Javas võib juhtuda, et peame primitiivsete andmetüüpide asemel kasutama objekte. Näiteks kollektsioonidega töötamise ajal.
// error ArrayList list = new ArrayList(); // runs perfectly ArrayList list = new ArrayList();
- Saame nullväärtuse salvestada ümbrisobjektidesse. Näiteks,
// generates an error int a = null; // runs perfectly Integer a = null;
Märkus : primitiivsed tüübid on tõhusamad kui vastavad objektid. Seega, kui nõutav on tõhusus, soovitatakse alati primitiivseid tüüpe.