I think part of it depends on what we call "compile time constants." This code is illustrative:
A human would see that b is true and would cause an infinite loop. Compiler is not able to evaluate the variable into a compile time constant.
The cool thing about
Java: create your own programs and play around with them!