Что такое классы-оболочки?

Краткое описание приведено ниже.

Класс-оболочка примитивов в языке программирования Java — это один из восьми классов, предоставляемых в пакете java.lang для предоставления объектных методов для восьми типов примитивов. Все примитивные классы-оболочки в Java являются неизменяемыми.

Оболочка: Boolean,Byte,Character,Double,Float,Integer, Long,Short
Примитив:
boolean,byte,char,double,float,int,long,short

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

Класс-оболочка окружает тип данных и придает ему вид объекта.
Причины, по которым нам нужны классы-оболочки
• Возможное значение — null
• использовать его в Коллекции
• Методы, которые поддерживают создание объектов, например, из других типов.. например, String
◦ Целое число2 = новое целое («55»);

Какие существуют способы создания экземпляров классов-оболочек?

Два способа создания экземпляров класса-оболочки описаны ниже.
Использование конструктора класса-оболочки
Целое число = новое целое число (55);//целое
Целое число2 = новое целое число («55») ;//String
Число с плавающей запятой3 = новое число с плавающей запятой (55.0);//двойной аргумент
Число с плавающей запятой4 = новое число с плавающей запятой (55.0f);// Аргумент с плавающей запятой
Число с плавающей запятой5 = новое число с плавающей запятой(“ 55.0f”);//Строковый аргумент
Символ c1 =new Character('C');//Только конструктор символов
//Символ c2=newCharacter(124);//ОШИБКА ВРЕМЕНИ КОМПИЛЯЦИИ

Boolean b =new Boolean(true);
//"true""True""tRUe"- все строковые значения дают True
//Все остальное дает false

Boolean b1 =new Boolean("true");//сохраненное значение - true
Boolean b2 =new Boolean("True");//сохраненное значение - true
Boolean b3 =new Boolean("False" ”);//сохраненное значение – false
Boolean b4 =new Boolean(“Some String”);//сохраненное значение – false

значение статических методов

Укажите другой способ создания объекта-оболочки
Integer сотни =Integer.valueOf("100");//100 хранится в переменной
Целое семь=Integer.valueOf("111",2);/ /binary 111 преобразуется в 7

В чем разница между двумя способами создания классов-оболочек?

Разница в том, что с помощью конструктора вы всегда будете создавать новый объект, а используя статический метод valueOf(), он может вернуть вам кэшированное значение в пределах диапазона.
Например: кэшированные значения для long находятся между [-128to127].
Мы должны предпочесть статический метод valueOf, потому что он может сэкономить вам память.
Чтобы лучше понять это,
вот реализация метода valueOf в классе Long
/**
* Возвращает экземпляр {@code Integer}, представляющий указанное
* значение {@code int}. Если новый экземпляр {@code Integer} не
* требуется, этот метод обычно следует использовать вместо
* конструктора {@link #Integer(int)}, так как этот метод, скорее всего,< br /> * для значительного повышения производительности пространства и времени за счет
* кэширования часто запрашиваемых значений.
*
* Этот метод всегда будет кэшировать значения в диапазоне от -128 до 127,
* включительно и может кэшировать другие значения за пределами этого диапазона.
*
* @param i значение {@code int}.
* @return экземпляр {@code Integer}, представляющий {@code i}.
* @since 1.5
*/
public static Integer valueOf(int i) {
if (i ›= IntegerCache.low && i ‹= IntegerCache .high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Что такое AutoBoxing?
Автоупаковка — это автоматическое преобразование, которое компилятор Java выполняет между примитивными типами и соответствующими классами-оболочками объектов. Например, conv преобразование int в Integer, double в Double и так далее. Если преобразование происходит в обратном направлении, это называется распаковкой.
Example1
Integer nineC=9;
> Example2
Integer ten=new Integer(10);
ten++;//разрешено.
У Java действительно была скрытая работа для нас.

Каковы преимущества AutoBoxing?
AutoBoxing помогает экономить память за счет повторного использования уже созданных объектов Wrapper. AutoBoxing использует статические методы valueOf. Однако классы-оболочки, созданные с использованием new, не используются повторно.
Два объекта-оболочки, созданные с использованием new, не являются одним и тем же объектом.
Целое девятьA=new Integer(9);
Целое число nineB=new Integer(9);
System.out.println(nineA==nineB);//false
System.out.println(nineA.equals(nineB));//true
Два объекта-оболочки, созданные с помощью упаковки, являются одним и тем же объектом.
Целое девятьC=9;
Целое девятьD=9;
System.out.println(nineC==nineD);//true< br /> System.out.println(nineC.equals(nineD));//true

Что такое приведение?
Приведение используется, когда мы хотим преобразовать тип данных в другой.
Существует два типа преобразования
• Неявное преобразование
• Явное преобразование

Что такое неявное приведение?
Неявное приведение выполняется компилятором. Хорошими примерами неявного приведения являются все автоматические расширяющие преобразования, т. е. сохранение меньших значений в больших типах переменных.
int value=100;
long number =value;//Неявное приведение типов
float f =100 ;//Неявное приведение Что такое явное приведение?
Явное приведение выполняется с помощью кода. Хорошими примерами явного приведения являются сужающие преобразования.
Сохранение больших значений в переменных меньшего типа;
long number1=25678;
int number2 =(int)number1;//явное приведение типов
//int x=35.35;// ОШИБКА КОМПИЛЯТОРА
int x =(int)35.35;//Явное приведение
Явное приведение приведет к усечению значения, если сохраненное значение больше размера переменной.
int bigValue=280 ;
byte small=(byte)big Value;
System.out.println(small); //output24(т.к. осталось только 8 бит).