如果长值足够小以适应int,可以自动将long转换为int吗?
long i=1;
int j=i; //Error Type mismatch: cannot convert from long to int
答案 0 :(得分:4)
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");
}
答案 1 :(得分:3)
不,你必须做一个明确的演员。
答案 2 :(得分:2)
这是一个缩小转换,需要显式转换。
int j= (int) i;
它需要一个明确的演员,因为它可能不够小,不适合你,你可能会丢失信息。您有责任确保长度足够小以适应。
来自Java语言规范:
有符号整数到整数类型T的缩小转换只会丢弃除n个最低位之外的所有位,其中n是用于表示类型T的位数。除了可能丢失有关幅度的信息之外数值,这可能导致结果值的符号与输入值的符号不同。
答案 3 :(得分:1)
java中不允许这样做。是的,你肯定可以这样做。
答案 4 :(得分:0)
您应该将其强制转换为int:
long i = 1;
int j = (int) i;