- 同一个作用域范围的包裹下局部变量和局部变量不可以重名(作用域内不能重复命名)
上面的代码虽然在C和C++里合法(将一个较大作用域的变量“隐藏”),但在java中是非法的,编译器会报告变量x已经定义过。
- 同一作用域范围的包裹下成员变量名和局部变量名是可以变量名相同的。在方法中使用变量时,如果不指明使用成员变量还是局部变量,那么默认使用局部变量(就近原则),但是如果局部变量超出了它本身的作用域范围则会失效,被JVM垃圾回收,那么则可以重复命名此变量。
public class Test04{
//成员变量
public int i = 0;
public static void main(String[] args) {
//局部变量
for(int i=0; i<1; i++) {
//变量i指for循环块内局部变量
System.out.println(i);
}
//局部变量
int i = 1;
//变量i指局部变量
System.out.println(i);
}
}