Sunday, 31 July 2011

Variable Scope
You cannot refer to a variable before its declaration.
You can declare variables in several different places:
  1. In a class body as class fields. Variables declared here are referred to as class-level variables.
  2. As parameters of a method or constructor.
  3. In a method's body or a constructor's body.
  4. Within a statement block, such as inside a while or for block.
Variable scope refers to the accessibility of a variable.
The rule 1 is that variables defined in a block are only accessible from within the block. The scope of the variable is the block in which it is defined. For example, consider the following for statement.
public class MainClass {

  public static void main(String[] args) {
    for (int x = 0; x < 5; x++) {
        System.out.println(x);
    }
  }

}
Rule number 2 is a nested block can access variables declared in the outer block. Consider this code.
public class MainClass {

  public static void main(String[] args) {
    for (int x = 0; x < 5; x++) {
        for (int y = 0; y < 3; y++) {
            System.out.println(x);
            System.out.println(y);
        }
    }
  }

}
Variables declared as method parameters can be accessed from within the method body. Class-level variables are accessible from anywhere in the class.
If a method declares a local variable that has the same name as a class-level variable, the former will 'shadow' the latter. To access the class-level variable from inside the method body, use the this keyword.

Variable Scope in a block

public class MainClass {
  public static void main(String[] args) {
    int outer = 1;

    {
      int inner = 2;
      System.out.println("inner = " + inner);
      System.out.println("outer = " + outer);
    }

    int inner = 3;
    System.out.println("inner = " + inner);
    System.out.println("outer = " + outer);
  }
}
 
output:
inner = 2
outer = 1
inner = 3
outer = 1
    

No comments: