我知道变量范围是由块的开头包围的{
和块的末尾}
。如果在块内声明相同的变量,则编译错误Variable already defined
发生。但看看下面的例子。
public class Test{
int x=0;// Class scope variable
public void m(){
int x=9; //redeclaration of x is valid within the scope of same x.
if(true){
int x=7; // but this redeclaration generates a compile time error.
}
}
Here, x
可以在方法中重新声明,尽管它已经在类中声明了。但在if
block, x
不能重新声明。
为什么类作用域变量的重新声明不会生成错误,但方法作用域变量的重新声明会生成错误?
这是因为int x=0
不是变量而是实例字段。局部变量可以与字段同名。为了区分变量和具有相同名称的字段,我们使用this
实例字段的前缀或类字段的类名。例如。
int x = this.x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)