0

when a variable is initialize both in local scope as well as global scope how can we use global scope without using this keyword in the same class?

Arun P Johny
  • 384,651
  • 66
  • 527
  • 531

5 Answers5

7
class MyClass{
    int i;//1
    public void myMethod(){
        i = 10;//referring to 1    
    }

    public void myMethod(int i){//2
        i = 10;//referring to 2
        this.i = 10 //refering to 1    
    }    
}  

Also See :

Community
  • 1
  • 1
jmj
  • 237,923
  • 42
  • 401
  • 438
2

If you do not use this it will always be the local variable.

fastcodejava
  • 39,895
  • 28
  • 133
  • 186
  • 1
    If there is no variable in local scope with the same name as a instance variable then you can use the instance variable with out the `this` prefix – Arun P Johny Dec 30 '10 at 09:10
2

It is impossible without this. The phenomenon is called variable hiding.

Vladimir Ivanov
  • 42,730
  • 18
  • 77
  • 103
2

If you are scoping the variable reference with this it will always point to the instance variable.

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.

Arun P Johny
  • 384,651
  • 66
  • 527
  • 531
2
public class VariableScope {

    int i=12;// Global
    public VariableScope(int i){// local

        System.out.println("local :"+i);
        System.out.println("Global :"+getGlobal());
    }
    public int getGlobal(){
        return i;
    }
}
dacwe
  • 43,066
  • 12
  • 116
  • 140
Gopal
  • 655
  • 3
  • 9
  • 18