1.概念:
作用域,可以简单的理解为有限范围
变量在同一个 {} 中,就是同一个作用域中
2.相同作用域内,变量不可重名
1.例如,下面的写法是错误的,变量a 重名了
int a = 2;
int a = 3;
2.数据类型不同,也不可以
int i =1;
String i = "i";
3.下面的变量不在同一个作用域,但 Java 局部变量不可以嵌套,故也是错误的
int a = 2;
{
int a =3;
}
4.局部变量,可以交替重名,但不是真的重名,因为 2 个 a 不同时存在
{
int a = 2;
}
int a = 3;
5.Java 的不同作用域可重名,指的是类的6种内容,
- 成员变量
- 构造方法
- 成员方法
- 静态代码块
- 非静态代码块
- 子类
3.超出作用域的变量名, 不起作用
例如,下面的 a, b不在同一个作用域内,在{}外面无法获取到 b
int a = 2;
{
int b =2;
}
System.out.println("b的值是:"+b);
4.变量重名时,以最近最小原则为准
例如下面的类中,运行say方法时, say 中的 int a 变量有效,成员变量 a 被屏蔽
public class Student {
public static void main(String[] args) {
Student st = new Student();
st.say();
}
int a =2;
public void say() {
int a = 3;
System.out.println(a);
}
}