Руководство по Java Core. Классы-обёртки.

До этого мы с Вами использовали примитивные типы данных (далее – примитивы) для работы с числами. Это были такие типы данных, как int, long, byte и т.д.

Тем не менее во время разработки реальных программ мы сталкиваемся с ситуациями, когда нам необходимы объекты, а не примитивы. С этой целью в языке Java созданы классы-обёртки.

Все эти классы являются наследниками класса Number.

Вот как выглядит иерархия класса Number.

number

Эти объекты “обёртывают” соответствующий им примитивы и преобразовывает его в объект (ссылочный тип данных). Этот процесс называется автоупаковкой (boxing). Обратный процесс называется распаковкой (unboxing).

Рассмотрим простой пример:


public class BoxingNumbersDemo {
    public static void main(String[] args) {
        Double number = 8.0;        //This is boxing of double by Double class

        number += 5.0;              //This is unboxing Double to double

        System.out.println("number = " + number);
    }
}

В результате работы программы получим следующий результат:


/*Some system messages*/
number = 13.0

Выше мы рассмотрели, как происходит упаковка и распаковка чисел с использованием класса Number. Далее мы увидим, как происходит тот же процесс для символов.

Для обеспечения boxing/unboxing символов, в языке Java существует класс Character.

Так же, как в ситуации с числами, мы часто сталкиваемся с ситуацией, когда нам нужны объекты, а не примитивы. В это случае, мы будем делать следующее.

Пример:


public class BoxingCharacterDemo {
    public static void main(String[] args) {
        Character character = 'C';      //Boxing char to Character
        char a = character;             //Unboxing Character to char

        System.out.println("character: " + character);
        System.out.println("char a: " + a);
    }
}

В результате работы программы мы получим следующий результат:


/*Some system messages*/
character: C
char a: C

В этом уроке мы рассмотрели классы Number и Character, а также такие процессы, как автоупаковка и распаковка (boxing/unboxing).

В следующем уроке мы рассмотрим такой класс, как String (строки).