int
限制为-2147483648到2147483647。
如果我输入
int i = 2147483648;
然后,Eclipse将在"2147483648“下提示一个红色下划线。
但如果我这样做:
int i = 1024 * 1024 * 1024 * 1024;
它会编译得很好。
public class Test {
public static void main(String[] args) {
int i = 2147483648; // error
int j = 1024 * 1024 * 1024 * 1024; // no error
}
}
也许这是Java中的一个基本问题,但我不知道为什么第二个变体不会产生错误。
发布于 2014-07-11 14:35:27
除了arshajii的回答之外,我还想说明一件事:
导致错误的不是赋值,而是文字的使用。当你尝试的时候
long i = 2147483648;
你会注意到它也会导致编译错误,因为右边仍然是一个int
-literal,超出了范围。
因此,使用int
-values (包括赋值)的操作可能会在没有编译错误(也没有运行时错误)的情况下溢出,但编译器就是无法处理这些太大的文字。
https://stackoverflow.com/questions/24676375
复制相似问题