Java variable scope
when a variable is initialize both in local scope as well as global scope how can we use global scope without u开发者_StackOverflow社区sing this
keyword in the same class?
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 :
- Shadowing Declarations
- what-is-variable-shadowing-used-for-in-a-java-class
If you do not use this
it will always be the local variable.
It is impossible without this. The phenomenon is called variable hiding.
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.
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;
}
}
精彩评论