0Pricing
Java Academy · Урок

Примитивные типы и типы-обёртки

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 превращается в Integer
  • char превращается в Character
  • boolean превращается в 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 — локальная установка не требуется.

Все уроки этого курса

  1. Примитивные типы и типы-обёртки
  2. Автоупаковка и распаковка
  3. Разбор и valueOf
  4. Подводные камни автоупаковки
← Назад к Java Academy