W tym samouczku dowiemy się o klasie Java Wrapper na przykładach.
Klasy opakowaniu, w javy jest wykorzystywany do konwersji pierwotnych typów ( int
, char
, float
, etc.) do odpowiednich przedmiotów.
Każdy z 8 typów pierwotnych ma odpowiadające mu klasy opakowania.
Typ prymitywny | Klasa opakowania |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
Konwertuj typ pierwotny na obiekty opakowujące
Możemy również użyć tej valueOf()
metody do konwersji typów pierwotnych na odpowiadające im obiekty.
Przykład 1: Typy pierwotne do opakowywania obiektów
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."); ) ) )
Wynik
Tworzony jest obiekt typu Integer. Powstaje obiekt Double.
W powyższym przykładzie użyliśmy valueOf()
metody do konwersji typów pierwotnych na obiekty.
Tutaj użyliśmy instanceof
operatora, aby sprawdzić, czy obiekty są generowane Integer
lub Double
rodzaju lub nie.
Jednak kompilator języka Java może bezpośrednio konwertować typy pierwotne na odpowiadające im obiekty. Na przykład,
int a = 5; // converts into object Integer aObj = a; double b = 5.6; // converts into object Double bObj = b;
Ten proces jest nazywany automatycznym boksowaniem . Aby dowiedzieć się więcej, odwiedź stronę Autoboxing i unboxing Java.
Uwaga : Możemy również konwertować typy pierwotne na obiekty opakowujące za pomocą Wrapper
konstruktorów klas. Ale użycie konstruktorów jest odrzucane po Javie 9.
Opakowywanie obiektów w typy pierwotne
Aby przekształcić przedmiotów do podstawowych typów, można stosować odpowiednie metody (wartość intValue()
, doubleValue()
itp), obecne w każdej klasie owijki.
Przykład 2: Pakowanie obiektów w typy pierwotne
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); ) )
Wynik
Wartość a: 23 Wartość b: 5,55
W powyższym przykładzie użyliśmy metody intValue()
and doubleValue()
do konwersji obiektów Integer
i Double
na odpowiadające im typy pierwotne.
Jednak kompilator języka Java może automatycznie konwertować obiekty na odpowiadające im typy pierwotne. Na przykład,
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;
Ten proces jest nazywany rozpakowywaniem . Aby dowiedzieć się więcej, odwiedź stronę Autoboxing i unboxing Java.
Zalety klas opakowujących
- W Javie czasami może być konieczne użycie obiektów zamiast prymitywnych typów danych. Na przykład podczas pracy z kolekcjami.
// error ArrayList list = new ArrayList(); // runs perfectly ArrayList list = new ArrayList();
- Możemy przechowywać wartość null w obiektach opakowania. Na przykład,
// generates an error int a = null; // runs perfectly Integer a = null;
Uwaga : typy pierwotne są bardziej wydajne niż odpowiadające im obiekty. Stąd, gdy wymagana jest wydajność, zawsze zaleca się typy pierwotne.