Why This Java Loop Is Not Infinite ๐Ÿค”

Published: (May 11, 2026 at 01:31 AM EDT)
2 min read
Source: Dev.to

Source: Dev.to

Code Example

public class Main
}
}

Sample Output

Start
0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, -34, -35, -36, -37, -38, -39, -40, -41, -42, -43, -44, -45, -46, -47, -48, -49, -50, -51, -52, -53, -54, -55, -56, -57, -58, -59, -60, -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, -86, -87, -88, -89, -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, -105, -106, -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, -117, -118, -119, -120, -121, -122, -123, -124, -125, -126, -127, -128,
"i" value is 127
End

Why the Loop Terminates

The loop appears infinite because the variable i keeps decreasing and seems always to be less than 10. However, i is declared as a byte, and a Java byte can only store values from โ€‘128 to 127.

  1. The loop starts at 0 and decrements i each iteration.
  2. When i reaches โ€‘128 and is decremented once more, it cannot represent โ€‘129.
  3. Javaโ€™s byte overflow causes the value to wrap around to 127.
  4. At i == 127, the loop condition i < 10 becomes false, so the loop exits.

Thus, the overflow of the byte type makes the loop terminate rather than run forever.

0 views
Back to Blog

Related posts

Read more ยป

str() vs repr() vs print() in Python

Overview When learning Python you encounter three builtโ€‘in utilities that often look similar: - str - repr - print At first they may seem to do the same thingโ€”...