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?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
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
回答2:
If you do not use this
it will always be the local variable.
回答3:
It is impossible without this. The phenomenon is called variable hiding.
回答4:
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.
回答5:
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;
}
}