Что такое обертка в java

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

Источник

Класс обертки На Java | Примеры Автоматической Упаковки И Распаковки

В этой статье рассматривается класс-оболочка в java с эквивалентными объектами класса-оболочки примитивных типов данных с примерами автоматической упаковки и распаковки.

Автор оригинала: Waseem.

Язык программирования Java является одним из самых популярных языков программирования в настоящее время. С такими понятиями, как переменные, типы данных, классы и объекты, возникает еще одна важная концепция класса-оболочки в java, которая необходима для синхронизации в многопоточности, структуре сбора и т.д. В этой статье мы обсудим необходимость класса-оболочки в java на различных примерах. Ниже приведены концепции, обсуждаемые в этом блоге:

Что Такое Класс Java – Оболочки?

Класс-оболочка предоставляет механизм преобразования примитивных типов данных в объекты класса-оболочки. Ниже приведены эквивалентные объекты класса-оболочки примитивных типов данных.

Ниже приведен пример, показывающий, как можно создать объект класса java-оболочки.

В приведенной выше программе мы использовали класс-оболочку вместо примитивных типов данных.

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

Ниже приведен пример использования этих методов в программе:

Аналогичным образом вы можете использовать другие методы, такие как double Value (), shortValue (), longValue (), byte Value (), чтобы получить соответствующие значения объектов класса-оболочки.

Потребность В Классе Java-Оболочки

Автобокс

Автобокс-это автоматическое преобразование примитивных типов данных в объекты соответствующего класса-оболочки.

Распаковка

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

В этой статье мы обсудили класс-оболочку в java, который помогает преобразовывать примитивные типы данных в соответствующие им объекты. Это помогает в синхронизации во время многопоточности, а также в различных других приложениях. Java – универсальный язык с множеством эффективных и революционных концепций.

У вас есть к нам вопрос? Пожалуйста, упомяните об этом в разделе комментариев статьи “Класс-оболочка в Java”, и мы свяжемся с вами как можно скорее.

Источник

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

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 ), а ссылки на объекты. Поэтому важно помнить, как правильно их сравнивать:

Источник

Классы Integer, Character, Boolean

Часто бывает предпочтительней работать с объектами, а не с примитивными типами. Так, например, при использовании коллекций, просто необходимо значения примитивных типов каким-то образом представлять в виде объектов. Для этих целей и предназначены так называемые классы-обертки (wrapper classes). Для каждого примитивного типа Java существует свой класс-обертки. Такой класс является неизменяемым, то есть, для изменения значения необходимо создавать новый объект. К тому же класс-обертка имеет атрибут final и его нельзя наследовать.

Все классы-обертки (кроме Void) реализуют интерфейс java.io.Serializable, поэтому объекты любого класса-обертки (кроме Void) могут быть сериализованы. Это имеет важное значение для «сетевых» пересылок объектов.

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

Wrapper classes числовых типов (Byte, Short, Integer, Long, Float, Double) наследуются от класса Number, который содержит код, общий для всех классов-оберток числовых типов. Все классы-обертки реализуют интерфейс Comparable.

Классы-обертки числовых типов имеют метод equals(Object), сравнивающий примитивные значения объектов. Но с этим надо быть предельно внимательным. Так в результате выполнения следующего кода

мы увидим в консоли следующий текст :

Данный результат связан с тем, что во всех классах-обертках метод equals() сначала производит проверку на совпадение типов (классов), и если нет совпадения, то сразу же возвращает false. В JDK 1.3.1 для класса-обертки Integer метод equals() определен следующим образом :

Класс Number

Абстрактный класс Number является суперклассом для классов Byte, Double, Float, Integer, Long и Short. Наследники Number должны обеспечить методы преобразовывания числовых значений в byte, double, float, int, long и short.

Класс Number имеет один конструктор :

Методы класса Number :

МетодОписание
byte byteValue()преобразование значения в тип byte
abstract double doubleValue()преобразование значения в тип double
abstract float floatValue()преобразование значения в тип float
abstract int intValue()преобразование значения в тип int
abstract long longValue()преобразование значения в тип long
short shortValue()преобразование значения в тип short

Класс Integer

Конструкторы класса Integer

Поля класса Integer

Наиболее значимые методы класса Integer

МетодОписание
byte byteValue()преобразование значения в тип byte
int compareTo(Integer integer)сравнение двух целых чисел
int compareTo(Object o)сравнение значения с другим объектом
Integer decode(String nm)перевод строки в Integer
double doubleValue()преобразование значения в тип double
boolean equals(Object obj)сравнение с другим объектом
float floatValue()преобразование значения в тип float
int hashCode()получение hashcode для обьекта
int intValue()преобразование значения в тип int
long longValue()преобразование значения в тип long
int parseInt(String s)преобразование текстового значения в тип int
int parseInt(String s, int radix)преобразование текстового значения со знаком в системе счисления, определенной во втором аргументе, в тип int
short shortValue()преобразование значения в тип short
String toBinaryString(int i)преобразование целочисленного значения i в текстовый вид с базой 2 (двоичный)
String toHexString(int i)преобразование целочисленного значения i в текстовый вид с базой 16(шестнадцатиричный)
String toOctalString(int i)преобразование целочисленного значения i в текстовый вид с базой 8(восьмиричный)
String toString()преобразование значения в тип String
String toString(int i)преобразование значения i в тип String
String toString(int i, int radix)преобразование целочисленного значения i в строку в заданной системе счисления radix
Integer valueOf(String s)создание объекта Integer, инициализированного величиной, определенной в строковой переменной s
Integer valueOf(String s, int radix)создание объекта Integer, инициализированного величиной, определенной в строковой переменной s, записанной в системе счисления radix

Методы parseInt(), преобразующие текстовое значение в целочисленное, не следует путать с методами valueOf(), возвращающие класс-обертку. Если переданная на вход строка содержит нецифровые символы, то методы возбуждают исключение NumberFormatException.

Дополнительную информацию о классе Integer можно получить на странице Кэширование класса Integer

Класс Byte

Класс Byte является стандартной оболочкой для байтовых величин.

Конструкторы класса Byte

Поля класса Byte

Методы класса Byte

МетодОписание
byte byteValue()получение значения типа byte
int compareTo(Byte byte)сравнение с объектом Byte
int compareTo(Object o)сравнение с другим объектом
static Byte decode(String nm)преобразование строки в Byte
double doubleValue()преобразование значения в double
boolean equals(Object obj)проверка на равенство с другим объектом
float floatValue()преобразование значения в float
int hashCode()получение hash-кода объекта
int intValue()преобразование значения в int
long longValue()преобразование значения в long
static byte parseByte(String s)преобразование текстового значения в byte
static byte parseByte(String s, int radix)преобразование текстового значения в системе счисления radix в байт
short shortValue()преобразование значения в short
String toString()преобразование значения в String
static String toString(byte b)преобразование байтового значения в String
static Byte valueOf(String s)преобразование текстового значения в Byte
static Byte valueOf(String s, int radix)преобразование текстового значения в системе счисления radix в Byte

Класс Boolean

Класс Boolean является оболочкой простого логического объекта. Объект типа Boolean содержит единственное поле логического типа. Кроме того, этот класс включает методы преобразования boolean в String и обратно, а также константы и методы полезные при работе с логическим типом.

Конструкторы класса Boolean

Поля класса Boolean

Методы класса Boolean

МетодОписание
boolean booleanValue()получение логического значения
boolean equals(Object obj)функция возвращает логическое значение по результату сравнения переданного объекта с текущим
static boolean getBoolean(String name)преобразование текстового значения в логическое
int hashCode()получение hash-кода объекта
String toString()преобразование в текстовое значение
static Boolean valueOf(String s)преобразование текстового значения в Boolean

Класс Void

Класс-обертка Void, в отличии от остальных, НЕ реализует интерфейс java.io.Serializable и не имеет открытого конструктора. Более того, экземпляр класса Void вообще не может быть получен. Он нужен только для получения ссылки на объект, соответствующий void. Эта ссылка представлена статической константой TYPE. Выражение void.class == Void.TYPE вернет «true».

Использовать Void можно, например, в случаях, когда имеется обобщенный класс (generic) и необходимо, чтобы метод ничего не возвращал :

Класс Character

Класс Character является оболочкой вокруг типа char. Чтобы получить значение типа char, содержащее в объекте Character, необходимо вызвать метод charValue().

Конструктор класса Character

Character имеет только один конструктор, которому в качестве параметра передается значение char.

Помимо констант MIN_VALUE и MAX_VALUE, Character содержит две константы MIN_RADIX и MAX_RADIX, которые равны минимальному и максимальному основанию системы счисления, которые используются методами (представленными ниже) для перевода отдельного цифрового символа в его целочисленный эквивалент и наоборот. Основание должно находиться в диапазоне 2–36; цифры свыше 9 представлены буквами от A до Z или их эквивалентами в нижнем регистре.

Источник

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

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