主要观点:在 JDK 8 带来的诸多新特性中,Math.toIntExact()方法易被忽视但很有用。它能将 long 类型值转换为 int 类型,若值溢出 int 范围则抛出 ArithmeticException;而 Long.intValue()方法在整数溢出时不抛出异常,而是返回一个可能无用的整数值。
关键信息:
- Javadoc 说明 Math.toIntExact(long)在值溢出 int 时抛出异常。
- 若已知 Long 不会大于 int 能容纳的值,Math.toIntExact(Long)很有用。
- Long.intValue()在整数溢出时不抛异常,软件可能继续错误使用溢出数字。
- 代码示例展示了生成包含 Integer.MAX_VALUE 的 Long 范围,以及使用 Long.intValue()和 Math.toIntExact(Long)从 Long 获取 int 的两种方法,输出结果体现了两者在处理整数溢出时的差异。
重要细节:
- 给出了相关 API 的文档链接,如 Math.toIntExact()、Long.intValue()等。
- 展示了具体的代码生成 Long 范围的方法 generateLongInts()。
- 给出了使用 Long.intValue()和 Math.toIntExact(Long)的两个方法 writeLongIntValue()和 writeIntExact()。
- 输出结果详细展示了不同 Long 值在使用两种方法转换为 int 时的情况,包括正常和整数溢出的情况。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。