1.13 变量的作用范围

变量是有作用范围的,超过了范围再去使用这个变量,就会收到“未知变量”的语法错误。变量的作用范围也很好确定: 变量在其定义所在的大括号内有效。 如下面的代码:
int a=5;
int b=4;
{
    int j=0;
    j=j+a;
}
System.out.println(j);
在System.out.println(j)这一句,就会出现“j cannot be resolved to a variable(j 无法解析为变量)”的语法错误。因为j只在内层大括号内有效。 一个变量定义在类的内部:
public class Tester{
    int a=5;
    int b=4;
    int j=5;
    {
        j=j+a+b;
    }
    System.out.println(j);
这里的a、b、j都在整个类Test里有效。 在同一个范围内,是不能定义同名的变量的,例如
public class Tester{
    int a=5;
    int a=4;
    int j=5;
    int b=10;
    ...;
}
这里出现了两个int a,会有这样的语法错误提示“Duplicate local variable a(局部变量 a 重复)”。还有下面的情况也会出同样的错误:
public class Tester{
    int a=5;
    int j=5;
    int b=10;
    {
        int a=4;
        j=j+a;
    }
    System.out.println(j);
}
因为int a=5定义的范围已经包括了整个类, 内层大括号内部也是它的作用范围。 最后,变量必须定义在某个大括号里面,不能定义在类的外面哦,例如下面这样的写法是错的:
int a=5;
public class Tester{
    int j=5;
    int b=10;
    {
        int a=4;
        j=j+a;
    }
    System.out.println(a);
}