Инициализация переменной long в Java: грамотная работа с числами

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

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

Для инициализации переменной типа long в Java применяется числовой литерал со суффиксом 'L':

Java
Скопировать код
long luckyNumber = 7L;

Когда вы работаете с числами, превосходящими максимальное значение для типа int, важно использовать 'L':

Java
Скопировать код
long astronomicalNumber = 9223372036854775807L;
// "Это число настолько велико, что даже состояние Джеффа Безоса покажется скромным по сравнению с ним!"

Не забудьте указать L, иначе вы выйдете за пределы типа int, что будет влечь за собой ошибки при компиляции.

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

Когда используется long

Тип Long применяется для работы с числами, превышающими ограничения типа int – то есть числами больше 32 бит. Это удобно, когда нужно учесть большие дистанции, выполнить точный отсчёт времени или посчитать количество вздохов на нудных совещаниях.

Распространенные ошибки

Пропущенный суффикс 'L'

Если вы забудете указать суффикс L при работе с большими числами, интерпретатор будет считать число типом int, что может вызвать переполнение или потерю данных:

Java
Скопировать код
// Ошибочно – число превышает максимальную величину для int и вызовет ошибку
long tooBigForInt = 2147483648; 

// Верно
long willFitWithinLimits = 2147483648L;

Строчная буква 'l' вместо 'L'

Использование строчной 'l' вместо заглавной 'L' при ручной инициализации переменной может привести к путанице, поскольку строчная 'l' визуально приближена к цифре '1'. Чтобы избежать недоразумений, всегда используйте заглавную 'L':

Java
Скопировать код
// Ставит в тупик
long ambiguousLetterL = 1000l; // "Это 10001 или 1000L?"

// Без двусмысленности
long clearLetterL = 1000L;

Сравнение типов данных

int против long

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

Автоматическое приведение типов

Java автоматически приводит значения типа int к long:

Java
Скопировать код
int smallNumber = 100;
long bigPlace = smallNumber; // Автоматическое приведение типа

При обратной операции – снижении типа из long в int – требуется явное приведение типа:

Java
Скопировать код
long bigNumber = 100L;
int smallerPlace = (int) bigNumber; // Требуется явное приведение типа

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

Инициализация long в Java – это как выбор правильного размера ящика для хранения ваших ценностей:

Java
Скопировать код
long boxForEverything = 0x7fffffffffffffffL; // "Теперь здесь поместятся все мемы Интернета!"

Как выглядят разные ящики?

Markdown
Скопировать код
| Размер ящика             | Значение long            |
| ------------------------ | ------------------------ |
| Миниатюрный (Min)        | -9223372036854775808L    |
| Стандартный (Zero)       | 0L                       |
| Огромный                 | 1234567890L              |

Добавление 'L' после каждого числа гарантирует, что ваше число безопасно относится к типу long.

Лучшие практики и возможные проблемы

Читаемость длинных чисел

Использование символа подчеркивания _ помогает разделять длинные числа на группы для улучшения читаемости:

Java
Скопировать код
long cardNumber = 1234_5678_9012_3456L; // Теперь это намного удобнее читать!

Проблемы при приведении типов

Берегите себя от потери точности при приведении long к типам float или double:

Java
Скопировать код
long preciseNumber = 123456789123456789L;
double approximateNumber = (double) preciseNumber; // Может привести к потере точности.

Когда диапазон long уже недостаточен

Если вам нужно работать с числами, превосходящими величину, допустимую для long, используйте BigInteger.

Java
Скопировать код
BigInteger reallyHugeNumber = new BigInteger("1234567891011121314151617181920");
// "Это число заставит задуматься даже самых утонченных ученых!"

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

  1. Примитивные типы данных (Java Tutorial)
  2. Все о long (Java SE 11 & JDK 11)
  3. Почему до сих пор применяют примитивные типы в Java? – Stack Overflow
  4. Глава 4. Типы, значения и переменные (Java Language Specification)
  5. Java Practices -> Излишнее инициализирование полей путем присваивания значений 0, false или null
  6. JavaScript: Понимание сложных аспектов – Первые 3,5 часа (YouTube)
  7. DZone: Типы данных в Java