3

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

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

5 回答 5

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");
}
于 2013-06-04T17:28:14.790 回答
3

不,您必须进行显式转换。

于 2013-06-04T17:26:06.000 回答
2

这是一个需要显式转换的缩小转换。

int j= (int) i;

它需要显式转换,因为它可能不够小而无法容纳,并且您可能会丢失信息。您有责任确保长度足够小以适合。

来自 Java 语言规范:

有符号整数到整数类型 T 的窄化转换只会丢弃除 n 个最低位之外的所有位,其中 n 是用于表示类型 T 的位数。此外,可能会丢失有关数值大小的信息,这可能会导致结果值的符号与输入值的符号不同。

于 2013-06-04T17:27:10.253 回答
1

在java中是不允许的。是的,你当然可以用另一种方式来做。

于 2013-06-04T17:27:11.300 回答
0

您应该将其转换为 int:

long i = 1;
int j = (int) i;
于 2013-06-04T17:27:21.740 回答