变量的作用域
在前面介绍过变量需要先定义后使用,但这并不意味着在变量定义之后的语句中一定可以使用该变量。变量需要在它的作用范围内才可以被使用,这个作用范围称为变量的作用域。在程序中,变量一定会被定义在某一对大括号中,该大括号所包含的代码区域便是这个变量的作用域。接下来通过一个代码片段来分析变量的作用域,具体示例如下:
上面的代码中,有两层大括号。其中,外层大括号所标识的代码区域就是变量x的作用域,内层大括号所标识的代码区域就是变量y的作用域。
变量的作用域在编程中尤为重要,接下来通过一个案例进一步熟悉变量的作用域,如文件1所示。
文件1 Example04.java
1 public class Example04 {
2 public static void main(String[] args) {
3 int x = 12; // 定义了变量x
4 {
5 int y = 96; // 定义了变量y
6 System.out.println("x =" + x); // 访问变量x
7 System.out.println("y =" + y); // 访问变量y
8 }
9 y = x; // 访问变量x,为变量y赋值
10 System.out.println("x =" + x); // 访问变量x
11 }
12 }
程序编译报错,如图1所示。
图1 运行结果
从图1可以看出,程序编译过程中出现了“y cannot be resolved to avariable”即y不能被解析为一个变量的错误信息。出错的原因在于,在给变量y赋值时超出了它的作用域。将文件1中的第9行代码去掉,再次编译程序将不再报错,运行结果如图2所示。
图2 运行结果
文件1修改后的代码中,变量x、y都在各自的作用域中,因此都可以被访问到。