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

上面的 for 循环无限地进行。如果有人能回答为什么,我将不胜感激?

4

3 回答 3

9

因为默认情况下 Java 中的任何数值都是有符号的。

所以 abyte在 range 中保存值[-128, 127],一个始终满足for循环条件的范围。任何时候i == 127,加进去1i变成了-128

于 2013-02-07T23:31:59.867 回答
4

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

是一个无限循环,因为i将永远是<= 255.

由于 Javabyte是有符号的,它们的值范围可以从-2^8(is -128) 到(2^8)-1(is 127)。

一次i是127,加一会变成-128,明显小于255。所以这个循环将永远运行。

于 2013-02-07T23:32:58.810 回答
2

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

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

于 2013-02-07T23:32:42.353 回答