Примитивные типы и типы-обёртки
Integer, Double, Boolean и другие
«Примитивные типы и типы-обёртки» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Два мира значений
В Java есть примитивные типы, например int, double и boolean, которые непосредственно хранят значения. Есть и классы-обёртки, например Integer, Double и Boolean, которые хранят эти значения внутри объектов.
Примитивы работают быстро и занимают мало места. Обёртки являются полноценными объектами: они могут находиться в коллекциях и иметь значение null.
Восемь примитивов
В Java определены ровно восемь примитивных типов:
byte,short,int,longдля целых чиселfloat,doubleдля дробных чиселcharдля одного символаbooleanдля логических значений
Для каждого из них в пакете java.lang есть соответствующий класс-обёртка.
Соответствующие имена обёрток
В большинстве случаев имя обёртки получается добавлением заглавной буквы к имени примитивного типа, но есть два исключения:
intпревращается в Integercharпревращается в Characterbooleanпревращается в Boolean,double— в Double и так далее
Давайте выведем несколько обёрток.
public class Main {
public static void main(String[] args) {
Integer count = 42;
Double price = 9.99;
Boolean active = true;
Character grade = 'A';
System.out.println(count);
System.out.println(price);
System.out.println(active);
System.out.println(grade);
}
}Обёртки являются объектами
Примитив хранит значение. Обёртка является ссылкой на объект, поэтому она может вообще ни на что не указывать — иметь значение null.
Это делает обёртки полезными, когда значение может отсутствовать, например для столбца базы данных, допускающего значение NULL.
public class Main {
public static void main(String[] args) {
Integer missing = null;
int present = 5;
System.out.println(missing);
System.out.println(present);
}
}Полезные константы
Классы-обёртки предоставляют удобные константы. Integer.MAX_VALUE и Integer.MIN_VALUE обозначают наибольшее и наименьшее значения типа int.
Это гораздо удобнее, чем запоминать эти числа самостоятельно.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
}
}Вспомогательные методы
Классы-обёртки также содержат набор статических вспомогательных методов. Например, Integer.toBinaryString показывает число в двоичной системе, а Integer.max возвращает большее из двух значений.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.toBinaryString(10));
System.out.println(Integer.max(7, 3));
System.out.println(Integer.toHexString(255));
}
}Зачем коллекциям нужны обёртки
Обобщения Java работают только с объектами, но не с примитивами. Нельзя написать List<int>.
Вместо этого используйте List<Integer>. Обёртка позволяет поместить примитивное значение в объектный мир, который требуется коллекциям.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
System.out.println(numbers);
}
}Сравнение значений обёрток
Чтобы сравнить числовые значения внутри двух обёрток, используйте .equals() или .compareTo(), а не арифметические операторы над самими объектами.
compareTo возвращает отрицательное число, ноль или положительное число.
public class Main {
public static void main(String[] args) {
Integer a = 100;
Integer b = 200;
System.out.println(a.equals(b));
System.out.println(a.compareTo(b));
}
}Память и производительность
Примитивы используют меньше памяти и работают быстрее, потому что не имеют накладных расходов объектов. Один int — это всего 4 байта исходных данных.
Объект-обёртка содержит дополнительную служебную информацию в заголовке. В часто выполняемых циклах по миллионам значений отдавайте предпочтение примитивам.
Значения по умолчанию различаются
Неинициализированное поле-примитив получает значение, похожее на нулевое: int равен 0, а boolean — false.
Неинициализированное поле-обёртка получает значение null. Это различие важно, когда позднее Вы пытаетесь использовать значение.
public class Main {
static int primitiveField;
static Integer wrapperField;
public static void main(String[] args) {
System.out.println(primitiveField);
System.out.println(wrapperField);
}
}Выбор между ними
Простое правило: по умолчанию используйте примитивы ради производительности и ясности кода. Переходите на обёртку, когда Вам нужен элемент коллекции, обобщённый тип или возможность представить отсутствующее значение с помощью null.
Быстрая проверка
Проверьте, насколько хорошо Вы понимаете примитивы и обёртки.
Итоги
Вы узнали о различиях между примитивами и обёртками:
- Восьми примитивам соответствуют восемь классов-обёрток, например
IntegerиDouble - Обёртки являются объектами, могут иметь значение
nullи подходят для коллекций - Примитивы быстрее и легче, поэтому по умолчанию используйте их
- Классы-обёртки также предоставляют полезные константы и вспомогательные методы
Часто задаваемые вопросы
Урок «Примитивные типы и типы-обёртки» бесплатный?
Да — полный текст урока «Примитивные типы и типы-обёртки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Примитивные типы и типы-обёртки»?
Integer, Double, Boolean и другие Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Примитивные типы и типы-обёртки»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Примитивные типы и типы-обёртки
- Автоупаковка и распаковка
- Разбор и valueOf
- Подводные камни автоупаковки