我正在编写一些代码,我必须将一个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,虽然它讨论了如何安全地转换它们,但它没有解释这个过程是如何运作的,而且我我很好奇它是怎么做的。我知道在长的情况下> Integer.MAX_VALUE会导致数据在被投射时被更改,我仍然对投射的实际效果感到困惑。
答案 0 :(得分:0)
如果Long.parseLong(Num)
返回的值高于Integer.MAX_VALUE
或低于Integer.MIN_VALUE
,则将其强制转换为int
将导致值不正确。
对于正long,将它们转换为int只是意味着将32个最低位分配给整数变量。我不确定负数多头是否相同(我必须检查)。