在Java中,长时间int-cast的工作原理是什么?
这个问题不是关于long should be correctly cast to an int如何转换,而是当我们错误地将它转换为int时会发生什么
请考虑这个代码-< /p> @Test
public void longTest()
{
long longNumber = Long.MAX_VALUE;
int intNumber = (int)longNumber; // potentially unsafe cast.
System.out.println("longNumber = "+longNumber);
System.out.println("intNumber = "+intNumber);
}
这就给出了输出-
longNumber = 9223372036854775807
intNumber = -1
现在假设我做了以下改变-
long longNumber = Long.MAX_VALUE - 50;
然后我得到输出-
longNumber = 9223372036854775757
intNumber = -51
问题是,如何将long的值转换为int
# 1 楼答案
将
long
的低32位取出并放入int
不过,以下是计算方法:
long
值视为2^64
加上该值。所以-1
被视为2^64-1。(这是无符号64位的值,它实际上是用二进制表示的。)李>int
。)李>