将 long 转换为整数如何工作?

How does casting long to integer work?

我正在编写一些必须将 long 类型转换为 int 类型的代码。输入以字符串形式出现,实际数字太大而无法立即解析为 int。所以我尝试解析为 long,然后转换为 int,这有效并让我感到困惑,因为我认为它不会。

public void setNum(String Num) {
   if (Num != null){
       //THIS MAKES NO SENSE **to me** :(
        this.Num = (int) Long.parseLong(Num); 
   } else {
        this.Num = -1;
   }
}

我已经阅读了我在此处找到的其他几个主题,特别是 this one 虽然它讨论了如何安全地转换它们,但没有解释该过程的工作原理和我很好奇它是怎么做到的。我知道如果 long > Integer.MAX_VALUE 会导致数据在转换时被更改,我仍然对转换的实际工作方式感到困惑。

如果 Long.parseLong(Num) returns 值高于 Integer.MAX_VALUE 或低于 Integer.MIN_VALUE,将其转换为 int 将导致不正确的值。

对于正 long,将它们转换为 int 只是意味着将最低 32 位分配给整数变量。我不确定负多头是否相同(我必须检查一下)。