我有一段代码,它可以运行但从不停止。
class A {
public static void main(String[] args) {
for (byte index = 0; index < 128; index++)
{
System.out.println(index);
}
}
}
有人能解释一下为什么它一直循环吗?
byte
只能代表-128至127之间的值。这意味着index
的每个可能值都小于128,因此循环无法使用当前条件终止。当index
达到127时,它会简单地溢出到-128并继续执行循环。byte是一种1字节类型,因此条件i<128始终为真。当你将127加1时,它会溢出并变成-128,然后再从那里开始。这就是你得到无限循环的原因。
byte
是有符号的。 - Ed S.