Blocks, Scopes and Lifetime in Java

A block is a group of zero or more statements between balanced braces ('{' and '}') and can be used anywhere a single statement is allowed inside a class, and this includes inside the class outside all methods and within methods. A method can also be considered as a block with a name.

 

Scope and lifetime

Variables declared inside a block has a scope and lifetime limited to that block. For example, if you declare a variable myVar inside a method, it is local to that method and won't be recognized outside. A variable declared in one block will be available to its inner blocks, but not to its outer blocks. 

 

Initialization blocks

When a block (without name) appears outside all methods, but inside the class, it is called an initialization block. An initialization block can be used to initialize a class similar to constructors. A constructor is the primary way to initialize an object and is executed when an object is created. We will see constructors in detail next. Initialization blocks can be static or instance initialization blocks based on if the static keyword is there or not.

 

Instance initialization blocks

Instance initialization blocks are initialization blocks without the static keyword. As we have seen, an initialization block is a block which is outside all methods, but inside a class.

Example for a normal initialization block:

class MyClass

{

  // Below block is an initialization block

  {

    /*some code*/

  }

  /*some code*/

}

  • Instance initialization blocks can initialize final variables.

  • Constructors can initialize final variables.

  • Both instance initialization blocks and constructors cannot initialize static final variables.

  • All the init blocks will be executed in the order they appear, but before the constructor.

  • Initialization blocks and constructors are executed after the execution of initializers and hence will override any variable values assigned through an initializer.

 

Static initialization blocks

Static initialization blocks are similar to instance initialization blocks, but has a static keyword before the block. Static Initialization blocks run only once when the class is first loaded. All static init blocks will be executed in the order they appear.

Example for a static initialization block:

class MyClass

{

  //Below block is a static initialization block

  static 

  {

    /*some code*/

  }

  /*some code*/

}

  • Static initialization blocks can initialize static final variables.

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)