Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Выбор между long и int, Integer и Long в Java API

Быстрый ответ

В большинстве случаев вы будете использовать int, если ваши данные не превышают 2^31-1. Если речь идет о больших числах, то стоит применять long. Классы-обертки Integer и Long полезны при использовании коллекций, таких как ArrayList и HashMap, а также когда нужна возможность присваивания null и доступность дополнительных методов. Если важна производительность, используйте примитивы, для разнообразия функциональности используйте объектные типы данных.

Java
Скопировать код
// Количество жизней у кота
int catLives = 9;
// Если каждый житель Земли даст вам по пять
long worldPopulationHighFives = 7800000000L;
// Сбор данных о встречаемости цифр в числе Пи
List<Integer> digitFrequencyOfPi = new ArrayList<>();

Опираясь на производительность, уделите преимущество примитивам, а для деления функционала – классам-оберткам.

Кинга Идем в IT: пошаговый план для смены профессии

Исследование использования памяти и производительности

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

Вот пример того, как массив примитивов и ArrayList объектов различаются в использовании памяти и исполнении кода:

Java
Скопировать код
int[] fibonacci = new int[1000]; // Экономия как у кота получившего собственную коробку
List<Integer> fibonacciList = new ArrayList<>(1000); // Удобство как у кота, получившего вечерний ужин

Особенности использования null и вызова методов

Работа с null

Обертки Integer и Long допускают null в качестве значения, что становится существенным в случаях, когда значение может быть не определено или отсутствует, а также когда есть возможность возвращения опционального результата.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Копирование при передаче в методы

Передача значения в метод в Java происходит по значению. Это означает, что при передаче объекта в метод вы работаете не с самим объектом, а с его копией – точно так же, как кот, который смотрит на свое отражение в зеркале.

Продвинутые сценарии использования

Важность точных расчетов

В случае работы с крупными числами или когда требуется точность расчетов — например, при научных и финансовых вычислениях — используйте long.

Универсальность оберток

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

Важность документации

При создании API или внешнего интерфейса выбор между int, long, Integer и Long может быть критическим. Всегда стоит документировать типы данных, чтобы другие разработчики понимали причины вашего выбора.

Визуализация

Выбор типа данных в Java можно сравнить с выбором транспортного средства для путешествия:

Markdown
Скопировать код
| Java Type   | Транспорт    | Сценарий использования            |
| ----------- | ------------ | ---------------------------------- |
| **int**     | 🚗 Легковой автомобиль | Для обычного использования: быстро и |
|             |              | эффективно; подходит для большинства|
|             |              | ситуаций.                          |
| **long**    | 🚛 Грузовик  | для работы с большими числами или  |
|             |              | сложными вычислениями.             |
| **Integer** | 🚗 Автомобиль с инструментарием| Когда требуются   |
|             |              | объектные особенности или          |
|             |              | поддержка null.                    |
| **Long**    | 🚛 Грузовик с инструментарием | Для значительных задач, требующих|
|             |              | объектные возможности.             |

Выбирайте разумно: 🚗 для быстрой разработки, 🚛 для работы с "тяжеловесами", 🔧 когда нужны объекты.

Обращение с «большими котами»: BigInteger

Если даже long не справляется с вашей задачей, например, в криптографии, BigInteger предоставит практически неограниченные математические возможности. Это как большая коробка для всегда любопытного кота!

Java
Скопировать код
BigInteger fatCat = new BigInteger("12345678901234567890");

Опыт YouTube: обновление счетчиков

YouTube стал известным благодаря обновлению своего счетчика просмотров до использования long, благодаря чему клип Gangnam Style смог превысить ограничение размера счетчика без сбоев!

Поиск альтернатив

Если даже Long (с максимумом 2^63-1) оказывается ограничивающим, рассмотрите выбор в пользу BigDecimal для работы с очень большими числами или числами, требующими точных вычислений. Помните, иногда нужно изменить подход, как, например, когда вы пытаетесь склонить кота слезть с клавиатуры.

Завершение: Будьте гибкими

Аналогично коту, который всегда приземляется на ноги, было бы неплохо, чтобы ваш код был устойчив к изменениям. Не Integer, ни long нельзя назвать универсальным решением. Тщательно обдумывайте текущие и возможные будущие требования к числовым данным в вашем приложении и выбирайте типы данных осознанно.

Полезные материалы

  1. Примитивные типы данных — Основные типы данных, поддерживаемые Java "из коробки".
  2. Почему люди все еще используют примитивные типы в Java? — Дискуссионный вопрос об использовании примитивов.
  3. Разница между Integer и int в Java с примерами — Глубокий анализ различий между int и Integer.
  4. Автоупаковка и распаковка — Объяснение автоупаковки и распаковки в Java.
  5. Сравнение производительности примитивов и объектов в Java — Сравнение производительности примитивных типов данных и объектных оберток.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой тип данных в Java следует использовать для хранения чисел, которые не превышают 2^31-1?
1 / 5