我一直在尝试将一个int
变量分配给一个long
变量进行转换。 代码如下:
public static void main(String []args){
int i = 1024;
long j = i;
long k = i*i*i*i;
System.out.println("j= " +j+ ", k= " +k);
}
因此,在打印j
时,它只输出了1024
。但是在打印k
时,它显示了一个溢出(k
=0)。我通过使用这种技术解决了这个问题,其中我将每个i
显式转换为long
。即:
public static void main(String []args){
int i = 1024;
long j = i;
long k = ((long)i)*((long)i)*((long)i)*((long)i);
System.out.println("j= " +j+ ", k= " +k);
}
现在,它展示了j
和k
的正确值。
所以,我想知道为什么在第二种情况下需要将int
转换为long
,但在第一种情况下不需要。 k
是一个long
类型,在这个繁重的赋值之后可以保留这个值。但是,为什么没有被正确地分配呢?
i
强制转换为 long 应该就足够了。 - Display Name