我有以下Java代码段:
int begin=Integer.MAX_VALUE-10;
int end=Integer.MAX_VALUE;
for(int i=begin;i<=end;i++){
System.out.println("hehe");
}
此代码段将无限运行,我可以理解这是因为
i<**=**end
但有些人说int
和Integer
的范围不同。这是真的吗?为什么?
答案 0 :(得分:6)
没有。 int
和Integer
的范围完全相同。
您的程序无限运行,因为当您向1
添加Integer.MAX_VALUE
时会出现数字溢出,结果将为Integer.MIN_VALUE
。反过来小于Integer.MAX_VALUE
。
如果这是实际问题,建议您使用long
和Long
代替int
和Integer