logo

Klasy opakowujące w Javie

The klasa opakowująca w Javie zapewnia mechanizm przekształcić prymityw w obiekt, a obiekt w prymityw .

Od J2SE 5.0, autoboxing I rozpakowywanie funkcja automatycznie konwertuje prymitywy na obiekty i obiekty na prymitywy. Automatyczna konwersja prymitywu w obiekt nazywana jest autoboxingiem i odwrotnie – unboxingiem.

Zastosowanie klas Wrapper w Javie

Java jest językiem programowania zorientowanym obiektowo, dlatego z obiektami musimy pracować wiele razy, np. w przypadku kolekcji, serializacji, synchronizacji itp. Przyjrzyjmy się różnym scenariuszom, w których musimy użyć klas opakowujących.

ciąg c w tablicy
    Zmień wartość w metodzie:Java obsługuje tylko wywołanie według wartości. Zatem jeśli przekażemy wartość pierwotną, nie zmieni to wartości oryginalnej. Ale jeśli przekonwertujemy wartość pierwotną w obiekcie, zmieni to wartość pierwotną.Serializacja:Aby przeprowadzić serializację, musimy przekonwertować obiekty na strumienie. Jeśli mamy wartość pierwotną, możemy ją przekonwertować na obiekty za pomocą klas opakowujących.Synchronizacja:Synchronizacja Java działa z obiektami w trybie wielowątkowości.pakiet java.util:Pakiet java.util udostępnia klasy narzędziowe do obsługi obiektów.Ramy kolekcji:Struktura kolekcji Java działa tylko z obiektami. Wszystkie klasy frameworku kolekcji (ArrayList, LinkedList, Vector, HashSet, LinkedHashSet, TreeSet, PriorityQueue, ArrayDeque itp.) zajmują się wyłącznie obiektami.

Osiem klas java.lang package są w Javie nazywane klasami opakowującymi. Lista ośmiu klas opakowań znajduje się poniżej:

Typ pierwotnyKlasa opakowania
wartość logicznaWartość logiczna
zwęglać Postać
bajtBajt
krótkiKrótki
wew Liczba całkowita
długiDługi
platformaPlatforma
podwójniePodwójnie

Autoboxing

Automatyczna konwersja prymitywnego typu danych na odpowiadającą mu klasę opakowania nazywana jest autoboxingiem, na przykład bajt na bajt, znak na znak, int na liczbę całkowitą, long na Long, float na Float, wartość logiczną na wartość logiczną, double na Double i krótką do Krótkiego.

Od wersji Java 5 nie musimy używać metody valueOf() klas opakowujących, aby konwertować prymityw na obiekty.

Klasa opakowania Przykład: Pierwotny do opakowania

 //Java program to convert primitive into objects //Autoboxing example of int to Integer public class WrapperExample1{ public static void main(String args[]){ //Converting int into Integer int a=20; Integer i=Integer.valueOf(a);//converting int into Integer explicitly Integer j=a;//autoboxing, now compiler will write Integer.valueOf(a) internally System.out.println(a+' '+i+' '+j); }} 

Wyjście:

zestaw c++
 20 20 20 

Rozpakowywanie

Automatyczna konwersja typu opakowania na odpowiadający mu typ pierwotny nazywana jest rozpakowywaniem. Jest to proces odwrotny do autoboxingu. Od wersji Java 5 nie musimy używać metody intValue() klas opakowań do konwersji typu opakowania na elementy pierwotne.

np. znaczy

Klasa opakowania Przykład: Opakowanie do elementu pierwotnego

 //Java program to convert object into primitives //Unboxing example of Integer to int public class WrapperExample2{ public static void main(String args[]){ //Converting Integer to int Integer a=new Integer(3); int i=a.intValue();//converting Integer to int explicitly int j=a;//unboxing, now compiler will write a.intValue() internally System.out.println(a+' '+i+' '+j); }} 

Wyjście:

 3 3 3 

Przykładowe klasy wrapperów Java

 //Java Program to convert all primitives into its corresponding //wrapper objects and vice-versa public class WrapperExample3{ public static void main(String args[]){ byte b=10; short s=20; int i=30; long l=40; float f=50.0F; double d=60.0D; char c='a'; boolean b2=true; //Autoboxing: Converting primitives into objects Byte byteobj=b; Short shortobj=s; Integer intobj=i; Long longobj=l; Float floatobj=f; Double doubleobj=d; Character charobj=c; Boolean boolobj=b2; //Printing objects System.out.println('---Printing object values---'); System.out.println('Byte object: '+byteobj); System.out.println('Short object: '+shortobj); System.out.println('Integer object: '+intobj); System.out.println('Long object: '+longobj); System.out.println('Float object: '+floatobj); System.out.println('Double object: '+doubleobj); System.out.println('Character object: '+charobj); System.out.println('Boolean object: '+boolobj); //Unboxing: Converting Objects to Primitives byte bytevalue=byteobj; short shortvalue=shortobj; int intvalue=intobj; long longvalue=longobj; float floatvalue=floatobj; double doublevalue=doubleobj; char charvalue=charobj; boolean boolvalue=boolobj; //Printing primitives System.out.println('---Printing primitive values---'); System.out.println('byte value: '+bytevalue); System.out.println('short value: '+shortvalue); System.out.println('int value: '+intvalue); System.out.println('long value: '+longvalue); System.out.println('float value: '+floatvalue); System.out.println('double value: '+doublevalue); System.out.println('char value: '+charvalue); System.out.println('boolean value: '+boolvalue); }} 

Wyjście:

 ---Printing object values--- Byte object: 10 Short object: 20 Integer object: 30 Long object: 40 Float object: 50.0 Double object: 60.0 Character object: a Boolean object: true ---Printing primitive values--- byte value: 10 short value: 20 int value: 30 long value: 40 float value: 50.0 double value: 60.0 char value: a boolean value: true 

Niestandardowa klasa opakowania w Javie

Klasy opakowujące Java otaczają prymitywne typy danych, dlatego są znane jako klasy opakowujące. Możemy również utworzyć klasę, która otacza prymitywny typ danych. Możemy więc utworzyć niestandardową klasę opakowania w Javie.

 //Creating the custom wrapper class class Javatpoint{ private int i; Javatpoint(){} Javatpoint(int i){ this.i=i; } public int getValue(){ return i; } public void setValue(int i){ this.i=i; } @Override public String toString() { return Integer.toString(i); } } //Testing the custom wrapper class public class TestJavatpoint{ public static void main(String[] args){ Javatpoint j=new Javatpoint(10); System.out.println(j); }} 

Wyjście:

 10