如果 long 值足够小以适合 int,您可以自动将 long 转换为 int 吗?
long i=1;
int j=i; //Error Type mismatch: cannot convert from long to int
如果 long 值足够小以适合 int,您可以自动将 long 转换为 int 吗?
long i=1;
int j=i; //Error Type mismatch: cannot convert from long to int
long i;
if (i =< Integer.MAX_VALUE && i >= Integer.MIN_VALUE) {
int j = (int) i; // No loss of precision
} else {
throw new Exception("Cannot convert "+i+" to int");
}
不,您必须进行显式转换。
这是一个需要显式转换的缩小转换。
int j= (int) i;
它需要显式转换,因为它可能不够小而无法容纳,并且您可能会丢失信息。您有责任确保长度足够小以适合。
来自 Java 语言规范:
有符号整数到整数类型 T 的窄化转换只会丢弃除 n 个最低位之外的所有位,其中 n 是用于表示类型 T 的位数。此外,可能会丢失有关数值大小的信息,这可能会导致结果值的符号与输入值的符号不同。
在java中是不允许的。是的,你当然可以用另一种方式来做。
您应该将其转换为 int:
long i = 1;
int j = (int) i;