在Java中如何避免这种情况下的类型转换
情况就是这样,我必须从int到long再从long到int。我想知道我是否可以避免这个角色在Java中如何避免这种情况下的类型转换,java,casting,Java,Casting,情况就是这样,我必须从int到long再从long到int。我想知道我是否可以避免这个角色 long temp = (long) i + nums[i]; // i + nums[i] could be bigger than Integer.MAX_VALUE // i and nums[] both are int type. int row = (int) (temp % 2); int col = (int) (temp
long temp = (long) i + nums[i]; // i + nums[i] could be bigger than Integer.MAX_VALUE
// i and nums[] both are int type.
int row = (int) (temp % 2);
int col = (int) (temp / 2);
其中行
和列
稍后将用于访问数组
我可以对行
语句做一个更改
int row = (i%2 + nums[i]%2) % 2;
但是我没有任何时间效率高的实现来替换
col
语句,这样我就可以避免对第一个语句进行长时间强制转换 为什么temp
along
?您是否希望值溢出?是的,在某些情况下,i+nums[i]将大于整数max。如果您使用的是java 8,则可以使用。其他答案中的其他策略也可能适用。当您添加2个int
值并分配给long
时,您不必进行显式类型转换。从较小的数据类型到较大的数据类型,Java进行自动类型转换。@MathewsMathai两个整数相加的结果是一个整数。如果有溢出,这将是错误的整数。只有这样,它才会被铸造成长形。因此OP首先铸造一个输入是正确的。