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);
}
}
This
for (byte i = 0; i<=255; i++)
这是一个无限循环,因为i将永远小于等于<= 255
。
由于Java的byte
是有符号的,它们的值可以从-2^8
(即-128)到(2^8)-1
(即127)。
一旦i达到127,加上1将使它变成-128,这显然小于255
。因此,这个循环将永远运行下去。
[-128, 127]
。因此,当字节值为127时增加它会溢出到-128,导致您的循环无限继续。
ILOAD 1
、ICONST_1
、IADD
进行的,然后将结果转换回字节以通过I2B
存储。因此,甚至存在不必要的操作码。 - Jack