Why is the scope of switch statements in Java unlimited?
Why in Java, the scope of variables is limited to switch blocks rather than case blocks For example,
// Scope limited to a switch block switch (number) { case 1: String result = "..."; break; case 2: result = "..."; break;
In the above example, the result needs to be declared only once If you declare it twice, you will receive duplicate local variable message
My question is: if number = 2, how does the program know that you have declared the result? (it will not belong to case 1, nor will it declare variables... Or will it?)
Edit:
I may confuse everyone I understand how to limit the scope of variables, but my question is: if this is not the case, how does Java know that the result has been declared?
Solution
Edit: Java uses lexical scope (also known as static scope), so the range of variables is determined during compilation, independent of the actual evaluation
Java is a block scope, so its scope will respect {} in the above example
See JLS 6.3: