Long.intValue变成-1到导致的问题

在 Java 中,将 long 类型转换为 int 时,如果 long 的值超出了 int 的范围,就会发生溢出,导致结果为负数。具体来说, int 类型的取值范围是从 -2,147,483,648 到 2,147,483,647,而 long 类型的取值范围更大(从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807)。

为什么会变成 -1

当你将一个 long 值转换为 int 时,Java 只会取 long 值的低 32 位(即 int 的有效位数)。如果这个低 32 位的值恰好是 0xFFFFFFFF (即二进制的 32 个 1),那么转换后的 int 值就会是 -1。

Long num = Long.MAX_VALUE;
int i = num.intValue();
System.out.println(i)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容