You are confusing and intermixing two concepts -- "Initialization Blocks" (sometimes also called "Initializer Blocks") and "Blocks". There are two types of Initialization Blocks, Static Initialization Blocks and Initialization Blocks. They are used to initialize a class. Initialization Blocks cannot exist in methods because simply they cannot. Just like a constructor cannot exist inside a method. Keep in mind you can have a block of code inside a method - that is code inside a set of braces. But that is just a block, not an Initialization Blocks. Blocks are used just to "organize" code for better readability, or to limit the scope of variables. Note that there is no such thing as a "static block".