A block of statements can contain variable declarations. The scope of a variable declared inside a block is the block itself, including other blocks contained in it, if present. This means that the variable is visible in the block and in all sub-blocks, but is not visible outside the block.
Example:
public class ScopeInBlock { public static void main(String[] args) { String a = "Hello"; int i = 1; { System.out.println(a); // OK. a is visible - prints Hello //int i; // ERROR. i is visibile and cannot be redeclared { double r = 5.5; // OK i = i + 1; // OK. i is still visible System.out.println(r); // OK. r is visible - prints 5.5 } //System.out.println(r); // ERROR. r is not visible System.out.println(i); // OK. i is visibile - prints 2 { int r = 4; // OK. previous r is not visible anymore System.out.println(a); // OK. a is still visibile - prints Hello } } i = i + 1; // OK. i is visible System.out.println(i); // OK. i is visible - prints 3 } }