我正在编写一些代码,我必须将 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)
返回的值高于Integer.MAX_VALUE
或低于Integer.MIN_VALUE
,则将其转换为int
将导致错误的值。
对于正长整型,将它们转换为 int 只是意味着将 32 个最低位分配给整型变量。我不确定负多头是否相同(我必须检查)。
关于java - 将 long 转换为整数是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187792/