В този урок ще научим за класа Java Wrapper с помощта на примери.
Класовете на обвиващи в Java се използват за преобразуване на примитивни типове ( int
, char
, float
, и т.н.) в съответните обекти.
Всеки от 8-те примитивни типа има съответни класове обвивки.
Примитивен тип | Клас обвивка |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
Преобразуване на примитивен тип в обвиващи обекти
Можем да използваме valueOf()
метода и за преобразуване на примитивни типове в съответни обекти.
Пример 1: Примитивни типове към обвиващи обекти
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."); ) ) )
Изход
Създава се обект на Integer. Създава се обект на Double.
В горния пример използвахме valueOf()
метода за преобразуване на примитивните типове в обекти.
Тук използвахме instanceof
оператора, за да проверим дали генерираните обекти са Integer
или са Double
или не.
Компилаторът на Java обаче може директно да преобразува примитивните типове в съответни обекти. Например,
int a = 5; // converts into object Integer aObj = a; double b = 5.6; // converts into object Double bObj = b;
Този процес е известен като автобокс . За да научите повече, посетете автобоксирането и разопаковането на Java.
Забележка : Можем също да преобразуваме примитивни типове в обвиващи обекти, като използваме Wrapper
конструктори на класове. Но използването на конструктори се отхвърля след Java 9.
Опаковъчни обекти в примитивни типове
За да конвертираме обекти в примитивни типове, можем да използваме съответните методи на стойност ( intValue()
, doubleValue()
и т.н.), налични във всеки клас на обвивка.
Пример 2: Опаковъчни обекти в примитивни типове
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); ) )
Изход
Стойността на a: 23 Стойността на b: 5.55
В горния пример, сме използвали intValue()
и doubleValue()
метод за превръщане на Integer
и Double
предмети в съответния примитиви.
Компилаторът на Java обаче може автоматично да конвертира обекти в съответни примитивни типове. Например,
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;
Този процес е известен като разопаковане . За да научите повече, посетете автобоксирането и разопаковането на Java.
Предимства на класовете обвивки
- В Java понякога може да се наложи да използваме обекти вместо примитивни типове данни. Например, докато работите с колекции.
// error ArrayList list = new ArrayList(); // runs perfectly ArrayList list = new ArrayList();
- Можем да съхраняваме нулевата стойност в обекти на обвивка. Например,
// generates an error int a = null; // runs perfectly Integer a = null;
Забележка : Примитивните типове са по-ефективни от съответните обекти. Следователно, когато ефективността е изискване, винаги се препоръчват примитивни типове.