首页  >  文章  >  Java  >  在 Java 中如何安全地将 Long 转换为 Int?

在 Java 中如何安全地将 Long 转换为 Int?

DDD
DDD原创
2024-10-26 14:59:31538浏览

How Can You Safely Cast a Long to an Int in Java?

在 Java 中安全地将 Long 转换为 Int

将 long 转换为 int 可能会导致信息丢失。为了防止这种情况,必须验证强制转换不会改变值。

传统方法:

一种常见的方法涉及强制转换为 int,然后强制转换回来到 long 来检查是否相等。但是,此方法有一个限制:对于大于 2^31-1 的值,它会失败。

Java 8 解决方案:

Java 8 引入了更强大的解决方案: Math.toIntExact(long).如果转换导致溢出,此方法会抛出 ArithmeticException。

<code class="java">long foo = 10L;
int bar = Math.toIntExact(foo); // Throws ArithmeticException on overflow</code>

其他溢出安全方法:

除了 toIntExact 之外,Java 8 还添加了其他几个以“exact”结尾的溢出安全方法。这些方法包括:

  • Math.incrementExact(long)
  • Math.subtractExact(long, long)
  • Math.decrementExact(long)
  • Math.negateExact(long)
  • Math.subtractExact(int, int)

使用这些方法可确保数据的完整性并防止意外的整数溢出。

以上是在 Java 中如何安全地将 Long 转换为 Int?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn