java - 将 long 转换为整数是如何工作的?

标签 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虽然它介绍了如何安全地转换它们,但它没有解释这个过程是如何工作的,我很好奇它是如何工作的。我知道,如果 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/

相关文章:

java - JSP请求get参数抛出异常

java - 我们可以在解码期间在运行时决定 jaxb 类吗?

java - Mockito - 深度 stub

C# 将程序集类转换为类型

python:如何读取二维动态列表的元素?

java - SetText 从类到主 XML 文件

r - R 中的数据透视表不均匀(长度列)

c# - 在 C# 中使用 "as"是一种安全的转换方式吗?

Python ---- 类型错误 : string indices must be integers

JavaScript打包整数并计算任意精度浮点: