如果long值足够小以适合int,则long为int

时间:2013-06-04 17:25:13

标签: java

如果长值足够小以适应int,可以自动将long转换为int吗?

long i=1;
int j=i; //Error Type mismatch: cannot convert from long to int

5 个答案:

答案 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;