我的一本 Java 书表明,从小类型到大类型的转换会自动发生,只有从更宽类型到更小类型才需要转换。如果这是真的,那么为什么下面的代码(其中 int 超过 1,因此需要 long)导致溢出而不是类型的扩大?int value = 2147483647 + 1; System.out.println(value);=> -2147483648
1 回答
桃花长相依
TA贡献1860条经验 获得超8个赞
在 Java 中,每当您计算两个数字时,都会使用较大的类型进行计算。结果也将是更大的类型。但是为此,该类型的值是什么并不重要。
例如:
1L + 1L
将产生一个long
值为2
.
但是你的例子:
2147483647 + 1
将产生一个int
值为-2147483648
. 因为两者都是int
他们会留下来的int
。
因此,要使其long
成为您想要的,您必须:
2147483647 + 1L
得到一个long
具有价值的2147483648
。
添加回答
举报
0/150
提交
取消