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)

你可能感兴趣的:(java,开发语言)