Why Java identifies unreachable code only in case of while loop?
if-statement, java, loops, unreachable-code
Solution
As described in Java Language Specification, this feature is reserved for "conditional compilation".
An example, described in the JLS, is that you may have a constant
static final boolean DEBUG = false;
and the code that uses this constant
if (DEBUG) { x=3; }
The idea is to provide a possibility to change `DEBUG` from `true` to `false` easily without making any other changes to the code, which would not be possible if the above code gave a compilation error.
Problem
If I have code like ``` public static void main(String args[]){ int x = 0; while (false) { x=3; } //will not compile } ``` compiler will complaint that `x=3` is unreachable code but if I have code like ``` public static void main(String args[]){ int x = 0; if (false) { x=3; } for( int i = 0; i< 0; i++) x = 3; } ``` then it compiles correctly though the code inside `if statement` and `for loop` is unreachable. Why is this redundancy not detected by java workflow logic ? Any usecase?