Для чего нужны классы обертки java

Урок 5. Классы обертки

Как мы говорили в предыдущем уроке, в Java для каждого примитивного типа существует соответствующий простой объект данных или, как говорится, класс оболочка.

Учитывая примитивный тип (все имена которого начинаются строго с первой строчной буквы), соответствующий объект данных получается, по существу, с заглавной буквы, как показано в следующей таблице:

Примитивный типКласс-оболочка
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

Хотя на первый взгляд может показаться, что есть небольшая разница между примитивным типом и его «обернутым» аналогом (также часто называемым «упакованным в коробку»), между ними существует фундаментальное различие: примитивные типы не являются объектами и у них нет связанного с ними класса, и поэтому они должны обрабатываться иначе, чем другие типы (например, они не могут использоваться в коллекциях, которые будут предметом будущих уроков) и не могут иметь методов.

Чтобы избежать этого различия, Java делает готовые классы доступными для содержания и «оболочки» примитивных типов. Фактически, мы можем думать о классе-оболочке точно так же, как обертка, единственная цель которой — содержать примитивное значение, делая его, с одной стороны, объектом и «украсив» его методами, которые в противном случае не имели бы своего естественного местоположения.

Для чего нужны классы обертки java. Смотреть фото Для чего нужны классы обертки java. Смотреть картинку Для чего нужны классы обертки java. Картинка про Для чего нужны классы обертки java. Фото Для чего нужны классы обертки java

Зачем нужны классы-оболочки в Java?

Разработчиками языка Java было принято очень хорошее решение отделить примитивные типы и классы-оболочки, указав при этом следующее:

Еще одним важным моментом является то, что примитивные типы не могут быть null, а классы-оболочки — могут.

От простых типов к объектам данных

Хотя в Java 1.5 введена концепция «автоупаковка и распаковка», которую мы рассмотрим на конкретном уроке, переход от примитивного типа к его обернутой версии в принципе прост, но трудоемок.

Например, обычный int занимает меньше места, и если над ним не планируется проводить особые операции, ваш компьютер будет работать быстрее.

Специальные методы парсинга

Классы-оболочки — это также место в Java, где очень полезные методы используются для анализа строк и преобразования их в числовые значения, например:

Когда мы используем эти методы для преобразования, нам нужно обрабатывать любое генерирование ошибок. На самом деле не все возможные последовательности символов являются числами, возьмем, например, следующий фрагмент:

Парсер не сможет успешно обработать строку, и мы получим ошибку, о которой JVM сообщает с помощью исключения NumberFormatException (подробнее об этом позже).

Строка

Среди типов оболочки мы также можем включить тип String, который имеет много общих характеристик с простыми объектами данных (например, неизменяемость). Но, учитывая важность строк, мы отложим для них целый урок.

Источник

Классы обертки в Java

Для чего нужны классы обертки java. Смотреть фото Для чего нужны классы обертки java. Смотреть картинку Для чего нужны классы обертки java. Картинка про Для чего нужны классы обертки java. Фото Для чего нужны классы обертки java

С классами обертками мы уже неявно познакомились, когда изучали коллекции. У многих мог возникнуть вопрос: зачем задавать целочисленную переменную не int, а Integer. Все дело в том, что коллекции это набор объектов и для того, чтобы оперировать примитивными типами как объектами и были придуманы классы обертки.

Стоить уточнить, что в данной статье будут рассмотрены только классы обертки для примитивных типов данных.

Данные классы имеют название от примитивного типа данных, который они представляют: Double, Float, Long, Integer, Short, Byte, Character, Boolean.

Для чего нужны классы обертки java. Смотреть фото Для чего нужны классы обертки java. Смотреть картинку Для чего нужны классы обертки java. Картинка про Для чего нужны классы обертки java. Фото Для чего нужны классы обертки java

Данные классы очень напоминают класс String. Объект обертку для примитивного типа можно создать как явно (используя конструктор), так и не явно (прямым присвоением примитива классу обертке) с помощью оператора»=» либо при передаче примитива в параметры метода (типа «класса-обертки»). Последнее еще называют автоупакова (autoboxing).

public class AutoBoxingExample <

public static void main ( String [ ] args ) <
Integer a = new Integer ( 5 ) ; //явное создание переменной обертки

int b = a ; //неявное создание.
>
>

Для чего нужны классы обертки java. Смотреть фото Для чего нужны классы обертки java. Смотреть картинку Для чего нужны классы обертки java. Картинка про Для чего нужны классы обертки java. Фото Для чего нужны классы обертки java

Автоупаковка переменных примитивных типов требует точного соответствия типа исходного примитива — типу «класса-обертки». Попытка автоупаковать переменную типа 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

На самом деле методов очень много, но это самые популярные и самые используемые для меня.

Вот и все, что касается классов оберток для примитивных типов данных. Теперь Вы сможете оперировать примитивными типами, как объектами.

Источник

Классы-оболочки в 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

1. Список типов-оберток

Все вы знаете, что в Java есть 8 примитивных типов, которые не являются классами. С одной стороны, это хорошо: они простые и занимают мало места, а с другой — иногда нужны именно классы. Зачем именно они, вы узнаете в следующей лекции.

Вот список таких типов, ничего не узнаете?

Примитивный типКласс-обертка

Все объекты классов-оберток являются неизменяемыми ( immutable ).

Упрощенный код класса Integer выглядит примерно так:

Метод возвращает значение

Статический метод создает новый объект Integer для переменной типа int

2. Преобразование типа int к Integer

Типы-обертки считаются аналогами их более примитивных собратьев: можно легко создать соответствующий объект-обертку для примитивного типа.

Разберем взаимодействие примитивных типов и их типов-оберток на примере типа int. Вот как бы выглядел код преобразования типа int к типу Integer и наоборот:

3. Autoboxing и unboxing

Однако даже простые операции с типом Integer писать непросто.

КодОписание
Оборачиваем 5 в класс Integer
Получаем значение из объекта Integer
Создаем новое значение Integer == 10

Код довольно громоздкий, не находите?

Ваш кодЧто видит компилятор
КодЧто сгенерирует компилятор

4. Сравнение переменных классов-оберток

КодВывод на экран

Переменные a и b хранят не значения (как типы int ), а ссылки на объекты. Поэтому важно помнить, как правильно их сравнивать:

Источник

Классы-оболочки в Java — руководство с примерами

Классы-оболочки Java являются Объектным представлением восьми примитивных типов в Java. Все классы-оболочки в Java являются неизменными и final. Начиная с Java 5 автоупаковка и распаковка позволяет легко конвертировать примитивные типы в их соответствующие классы-оболочки и наоборот.

В таблице ниже показаны примитивные типы и их классы-обертки в Java

Примитивный типКласс-оберткаАргументы
byteBytebyte или String
shortShortshort или String
intIntegerint или String
longLonglong или String
floatFloatfloat, double или String
doubleDoubledouble или String
charCharacterchar
booleanBooleanboolean или String

Зачем нужны классы-оболочки в Java?

Разработчиками языка Java было принято очень умное решение отделить примитивные типы и классы-оболочки, указав при этом следующее:

Еще одним важным моментом является то, что примитивные типы не могут быть null, а классы-оболочки — могут.

Также классы-оболочки могут быть использованы для достижения полиморфизма.

Вот простая программа, показывающая различные аспекты классов-оболочек в Java :

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *