Вы продолжаете увеличивать счетчик, и он в конечном итоге переполняется и оборачивается до 0
.
In binary, Integer.MAX_VALUE = 2147483647 = 01111111 11111111 11111111 11111111
^
sign bit (positive)
When you add one more to the number it becomes
Integer.MIN_VALUE = -2147483648 = 1000000 000000 000000 000000 000000
^
sign bit (negative)
Таким образом, он оборачивается и переходит от Integer.MAX_VALUE к Integer.MIN_VALUE.
for(int count=Integer.MAX_VALUE -10; count != Integer.MIN_VALUE + 10; count++){
System.out.println("count = " + count);
}
Как вы можете видеть, если вы продолжите добавлять 1
к count
, оно в конечном итоге увеличится до 0
, и вы получите деление на ошибку 0
.
Вы можете прочитать больше о Дополняющее представление двоих в Википедии.