class kk{
public static void main(String args[]){
int n=0;
for (byte i = 0; i<=255; i++)
{
n++;
}
System.out.println(n);
}
}
上面的for循环继续无限。如果有人能回答为什么我会很感激吗?
答案 0 :(得分:9)
因为Java中的任何数值默认为已签名。
因此byte
保存范围[-128, 127]
中的值,该范围始终满足for
循环的条件。每当i == 127
将1
添加到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并且你的循环无限期地继续。