class kk{
public static void main(String args[]){
int n=0;
for (byte i = 0; i<=255; i++)
{
n++;
}
System.out.println(n);
}
}
上面的 for 循环无限地进行。如果有人能回答为什么,我将不胜感激?
class kk{
public static void main(String args[]){
int n=0;
for (byte i = 0; i<=255; i++)
{
n++;
}
System.out.println(n);
}
}
上面的 for 循环无限地进行。如果有人能回答为什么,我将不胜感激?
因为默认情况下 Java 中的任何数值都是有符号的。
所以 abyte在 range 中保存值[-128, 127],一个始终满足for循环条件的范围。任何时候i == 127,加进去1就i变成了-128。
这
for (byte i = 0; i<=255; i++)
是一个无限循环,因为i将永远是<= 255.
由于 Javabyte是有符号的,它们的值范围可以从-2^8(is -128) 到(2^8)-1(is 127)。
一次i是127,加一会变成-128,明显小于255。所以这个循环将永远运行。
[-128, 127].因此,当字节 127 递增时,它会溢出到 -128,并且您的循环会无限期地继续。