铸造如何长整数工作?

时间:2015-07-02 14:48:08

标签: java casting integer long-integer

我正在编写一些代码,我必须将一个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会导致数据在被投射时被更改,我仍然对投射的实际效果感到困惑。

1 个答案:

答案 0 :(得分:0)

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

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