Что такое классы оболочки java
Класс обертки На Java | Примеры Автоматической Упаковки И Распаковки
В этой статье рассматривается класс-оболочка в java с эквивалентными объектами класса-оболочки примитивных типов данных с примерами автоматической упаковки и распаковки.
Автор оригинала: Waseem.
Язык программирования Java является одним из самых популярных языков программирования в настоящее время. С такими понятиями, как переменные, типы данных, классы и объекты, возникает еще одна важная концепция класса-оболочки в java, которая необходима для синхронизации в многопоточности, структуре сбора и т.д. В этой статье мы обсудим необходимость класса-оболочки в java на различных примерах. Ниже приведены концепции, обсуждаемые в этом блоге:
Что Такое Класс Java – Оболочки?
Класс-оболочка предоставляет механизм преобразования примитивных типов данных в объекты класса-оболочки. Ниже приведены эквивалентные объекты класса-оболочки примитивных типов данных.
Ниже приведен пример, показывающий, как можно создать объект класса java-оболочки.
В приведенной выше программе мы использовали класс-оболочку вместо примитивных типов данных.
Ниже приведены методы получения соответствующего значения из объектов-оболочек.
Ниже приведен пример использования этих методов в программе:
Аналогичным образом вы можете использовать другие методы, такие как double Value (), shortValue (), longValue (), byte Value (), чтобы получить соответствующие значения объектов класса-оболочки.
Потребность В Классе Java-Оболочки
Автобокс
Автобокс-это автоматическое преобразование примитивных типов данных в объекты соответствующего класса-оболочки.
Распаковка
Это обратная сторона автобокса, когда объект класса-оболочки преобразуется в соответствующий примитивный тип данных.
В этой статье мы обсудили класс-оболочку в java, который помогает преобразовывать примитивные типы данных в соответствующие им объекты. Это помогает в синхронизации во время многопоточности, а также в различных других приложениях. Java – универсальный язык с множеством эффективных и революционных концепций.
У вас есть к нам вопрос? Пожалуйста, упомяните об этом в разделе комментариев статьи “Класс-оболочка в Java”, и мы свяжемся с вами как можно скорее.
Классы-оболочки в Java — руководство с примерами
Классы-оболочки Java являются Объектным представлением восьми примитивных типов в Java. Все классы-оболочки в Java являются неизменными и final. Начиная с Java 5 автоупаковка и распаковка позволяет легко конвертировать примитивные типы в их соответствующие классы-оболочки и наоборот.
В таблице ниже показаны примитивные типы и их классы-обертки в Java
Примитивный тип | Класс-обертка | Аргументы |
byte | Byte | byte или String |
short | Short | short или String |
int | Integer | int или String |
long | Long | long или String |
float | Float | float, double или String |
double | Double | double или String |
char | Character | char |
boolean | Boolean | boolean или String |
Зачем нужны классы-оболочки в Java?
Разработчиками языка Java было принято очень умное решение отделить примитивные типы и классы-оболочки, указав при этом следующее:
Еще одним важным моментом является то, что примитивные типы не могут быть null, а классы-оболочки — могут.
Также классы-оболочки могут быть использованы для достижения полиморфизма.
Вот простая программа, показывающая различные аспекты классов-оболочек в Java :
Классы-оболочки в Java
Взгляните на классы-оболочки в Java и на то, как работают примитивы бокса и распаковки.
1. Обзор
Как следует из названия, классы-оболочки – это объекты, инкапсулирующие примитивные типы Java.
Каждый примитив Java имеет соответствующую оболочку:
2. Классы обертки
Например, фреймворк коллекции Java работает исключительно с объектами. Давным-давно (до Java 5, почти 15 лет назад) не было автобоксов, и мы, например, не могли просто вызвать add(5) для набора целых чисел.
В то время эти примитивные значения должны были быть вручную преобразованы в соответствующие классы-оболочки и сохранены в коллекциях.
3. Преобразование примитива в класс-оболочку
Теперь большой вопрос: как мы преобразуем примитивное значение в соответствующий класс-оболочку, например, int в Целое число или char в Символ?
Ну, мы можем использовать либо конструкторские, либо статические фабричные методы для преобразования примитивного значения в объект класса-оболочки.
Однако начиная с Java 9 конструкторы для многих коробочных примитивов, таких как Integer | или Long , устарели.
Давайте рассмотрим пример преобразования значения int в объект Integer в Java:
С другой стороны, для преобразования объекта-оболочки в примитивное значение мы можем использовать соответствующий метод, такой как intValue(), doubleValue () |/и т. Д:
4. Автобокс и распаковка
В предыдущем разделе мы показали, как вручную преобразовать примитивное значение в объект.
После Java 5 это преобразование может быть выполнено автоматически с помощью функций, называемых автобоксом и распаковкой.
“Бокс” относится к преобразованию примитивного значения в соответствующий объект-оболочку. Поскольку это может произойти автоматически, это называется автобоксом.
Аналогично, когда объект-оболочка разворачивается в примитивное значение, это называется распаковкой.
В этом примере Java автоматически преобразует значение примитива int в оболочку.
Внутренне он использует метод valueOf() для облегчения преобразования. Например, следующие строки эквивалентны:
Подобно автобоксу, распаковка выполняется автоматически при передаче объекта методу, ожидающему примитив, или при назначении его переменной примитива:
В принципе, если мы напишем метод, который принимает примитивное значение или объект-оболочку, мы все равно сможем передать им оба значения. Java позаботится о передаче правильного типа, например, примитива или оболочки, в зависимости от контекста.
5. Заключение
В этом кратком руководстве мы говорили о классах-оболочках в Java, а также о механизме автобокса и распаковки.
Классы обертки в Java
С классами обертками мы уже неявно познакомились, когда изучали коллекции. У многих мог возникнуть вопрос: зачем задавать целочисленную переменную не int, а Integer. Все дело в том, что коллекции это набор объектов и для того, чтобы оперировать примитивными типами как объектами и были придуманы классы обертки.
Стоить уточнить, что в данной статье будут рассмотрены только классы обертки для примитивных типов данных.
Данные классы имеют название от примитивного типа данных, который они представляют: Double, Float, Long, Integer, Short, Byte, Character, Boolean.
Данные классы очень напоминают класс String. Объект обертку для примитивного типа можно создать как явно (используя конструктор), так и не явно (прямым присвоением примитива классу обертке) с помощью оператора»=» либо при передаче примитива в параметры метода (типа «класса-обертки»). Последнее еще называют автоупакова (autoboxing).
public class AutoBoxingExample <
public static void main ( String [ ] args ) <
Integer a = new Integer ( 5 ) ; //явное создание переменной обертки
int b = a ; //неявное создание.
>
>
Автоупаковка переменных примитивных типов требует точного соответствия типа исходного примитива — типу «класса-обертки». Попытка автоупаковать переменную типа byte в Short, без предварительного явного приведения byte->short вызовет ошибку компиляции. О приведении типов мы уже писали.
public class AutoBoxingExample <
public static void main ( String [ ] args ) <
Integer a = new Integer ( 5 ) ;
Integer b = new Integer ( 5 ) ;
b = new Integer ( 3 ) ;
Integer c = new Integer ( 444 ) ;
Integer d = new Integer ( 444 ) ;
d = new Integer ( 456 ) ;
Результат работы программы:
Классы обертки удобны еще тем, что они предоставляют методы для работы с соответственными типами данных.
Давайте посмотрим на самые популярные:
public class AutoBoxingExample <
Хотелось бы еще рассмотреть создание Boolean переменной. Этот вопрос встречается достаточно часто в тестах:
public class BooleanExample <
public static void main ( String [ ] args ) <
Boolean b1 = new Boolean ( false ) ; //false
Boolean b2 = new Boolean ( «false» ) ; //false
Boolean b3 = new Boolean ( true ) ; //true
Boolean b4 = new Boolean ( «true» ) ; //true
Boolean b5 = new Boolean ( «hi there» ) ; //false
На самом деле методов очень много, но это самые популярные и самые используемые для меня.
Вот и все, что касается классов оберток для примитивных типов данных. Теперь Вы сможете оперировать примитивными типами, как объектами.
Урок 5. Классы обертки
Как мы говорили в предыдущем уроке, в Java для каждого примитивного типа существует соответствующий простой объект данных или, как говорится, класс оболочка.
Учитывая примитивный тип (все имена которого начинаются строго с первой строчной буквы), соответствующий объект данных получается, по существу, с заглавной буквы, как показано в следующей таблице:
Примитивный тип | Класс-оболочка |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
Хотя на первый взгляд может показаться, что есть небольшая разница между примитивным типом и его «обернутым» аналогом (также часто называемым «упакованным в коробку»), между ними существует фундаментальное различие: примитивные типы не являются объектами и у них нет связанного с ними класса, и поэтому они должны обрабатываться иначе, чем другие типы (например, они не могут использоваться в коллекциях, которые будут предметом будущих уроков) и не могут иметь методов.
Чтобы избежать этого различия, Java делает готовые классы доступными для содержания и «оболочки» примитивных типов. Фактически, мы можем думать о классе-оболочке точно так же, как обертка, единственная цель которой — содержать примитивное значение, делая его, с одной стороны, объектом и «украсив» его методами, которые в противном случае не имели бы своего естественного местоположения.
Зачем нужны классы-оболочки в Java?
Разработчиками языка Java было принято очень хорошее решение отделить примитивные типы и классы-оболочки, указав при этом следующее:
Еще одним важным моментом является то, что примитивные типы не могут быть null, а классы-оболочки — могут.
От простых типов к объектам данных
Хотя в Java 1.5 введена концепция «автоупаковка и распаковка», которую мы рассмотрим на конкретном уроке, переход от примитивного типа к его обернутой версии в принципе прост, но трудоемок.
Например, обычный int занимает меньше места, и если над ним не планируется проводить особые операции, ваш компьютер будет работать быстрее.
Специальные методы парсинга
Классы-оболочки — это также место в Java, где очень полезные методы используются для анализа строк и преобразования их в числовые значения, например:
Когда мы используем эти методы для преобразования, нам нужно обрабатывать любое генерирование ошибок. На самом деле не все возможные последовательности символов являются числами, возьмем, например, следующий фрагмент:
Парсер не сможет успешно обработать строку, и мы получим ошибку, о которой JVM сообщает с помощью исключения NumberFormatException (подробнее об этом позже).
Строка
Среди типов оболочки мы также можем включить тип String, который имеет много общих характеристик с простыми объектами данных (например, неизменяемость). Но, учитывая важность строк, мы отложим для них целый урок.