为什么这个循环无限运作?

时间:2013-02-07 23:30:16

标签: java

class kk{
    public static void main(String args[]){
        int n=0;
        for (byte i = 0; i<=255; i++) 
        { 
             n++;
        }
        System.out.println(n);
    }
}

上面的for循环继续无限。如果有人能回答为什么我会很感激吗?

3 个答案:

答案 0 :(得分:9)

因为Java中的任何数值默认为已签名

因此byte保存范围[-128, 127]中的值,该范围始终满足for循环的条件。每当i == 1271添加到i时,都会将其转换为-128

答案 1 :(得分:4)

for (byte i = 0; i<=255; i++)

是一个无限循环,因为i始终为<= 255

由于Java byte已签名,其值可以从-2^8(是-128)到{​​{1}}(为127)。

(2^8)-1为127后,添加一个会将其转为-128,明显小于i。所以这个循环将永远运行。

答案 2 :(得分:2)

因为字节值在[-128, 127]

的范围内

因此,当字节127递增时,它溢出到-128并且你的循环无限期地继续。