Special behavior of for loop in Java

Today, while reading boxing and automatic boxing, I came up with a scene and found that I was trapped in an infinite cycle

I checked my code twice, but I didn't find any errors If someone can see and advise me where I did wrong, I will have this infinite cycle

Please find the code below

public class InTheLoop {

public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;

public static void main(String[] args) {
    int count = 0;
     //Infinite loop starts.
    for (int i = START; i <= END; i++) {
        count++;
        System.out.println(count);
    }

 // This never got printed.
    System.out.println("hi I am out of for loop" +count);
  }
}

Solution

Note that your end is equal to the maximum possible value that an integer can hold (the value is 2147483647) This means that I < = end is always true for any value I may hold When I actually reach 2147483647, it is still < = end In the next iteration, you try to increment it by 1, which will cause overflow, and I change to - 2147483648, which is still < = end, and the loop will continue forever

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>