До этого мы с Вами использовали примитивные типы данных (далее – примитивы) для работы с числами. Это были такие типы данных, как int, long, byte и т.д.
Тем не менее во время разработки реальных программ мы сталкиваемся с ситуациями, когда нам необходимы объекты, а не примитивы. С этой целью в языке Java созданы классы-обёртки.
Все эти классы являются наследниками класса 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 (строки).