日期:2014-05-20  浏览次数:20586 次

这个是不是死循环呢
for(int i = 1; i>0 ; i++){
System.out.println(i);
}我理解的是,不是死循环,因为int类型容纳量好像是2的32次方个数吧,不知道对不对

------解决方案--------------------
不会死循环,楼主理解正确,把代码稍微改写下,即可看出
Java code

        for(int i = Integer.MAX_VALUE -1; i>0 ; i++){
            System.out.println(i);
        }

------解决方案--------------------
楼主理解的完全正确,等i超过整数的范围时,会溢出,此时i<0了
------解决方案--------------------
int基本类型是有范围的-2147483648~2147483647。
------解决方案--------------------
不会成死循环,不过栈内存分配太多变量,容易造成栈溢出现象,另外我们知道int类型的最大值为2G-1
2的32次方-1
内存补码为01111111 11111111 11111111 11111111
当进入下一次循环时i+1此时i=2G根据2进制补码原则补码为
10000000 00000000 00000000 00000000
变为int类型的最小值。从这个循环我们可以得到一个结论
int 类型最大值+1=int 类型最小值
------解决方案--------------------
嗯,不是死循环。楼上讲 int 类型最大值+1=int 类型最小值 是正确的。