«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу безопасно преобразовать Long в Int в Java?

Как я могу безопасно преобразовать Long в Int в Java?

Опубликовано 9 ноября 2024 г.
Просматривать:745

How Can I Safely Cast Long to Int in Java?

Безопасное приведение Long к Int в Java: комплексное решение

При работе с числовыми типами в Java крайне важно убедиться, что приведение операции не приводят к потере данных. Это особенно важно при приведении длинных значений к int, так как точность long может превышать точность int.

Java 8: упрощение процесса

До Java 8 , безопасное приведение long к int потребовало утомительной проверки, чтобы убедиться, что приведение не изменило значение. Однако с появлением Java 8 был добавлен новый метод, упрощающий этот процесс:

import static java.lang.Math.toIntExact;

long foo = 10L;
int bar = toIntExact(foo);

Метод toIntExact выдает ArithmeticException, если приведение приведет к переполнению, гарантируя сохранение целостности данных.

Дополнительные методы, безопасные для переполнения

В Java 8 также появилось несколько других методов защиты от переполнения. Все эти методы заканчиваются словом «exact» и предоставляют следующую функциональность:

  • Math.incrementExact(long): увеличивает длинное значение на единицу.
  • Math.subtractExact(long, long ): вычитает одно длинное значение из другого.
  • Math.decrementExact(long): уменьшает длинное значение на one.
  • Math.negateExact(long): отрицает длинное значение.
  • Math.subtractExact(int, int): вычитает одно целое значение из другого.

Вывод

Используя метод toIntExact и другие средства защиты от переполнения методов, добавленных в Java 8, разработчики могут уверенно приводить длинные значения к int, не жертвуя при этом точностью данных. Это имеет решающее значение для поддержания целостности численных вычислений и обеспечения надежности кода.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3