java作用域指的是标识符的有效范围
保证变量在合理的范围内进行使用,而不是定义一个变量,哪里都能用的那种。
在类Practice的类体中声明一个number变量,可以发现里面的所有方法都可以使用它
示例代码
public class Practice {
static int number;
public static void main(String[] args) {
System.out.println("main当中输出number的值"+number);
show();
}
public static void show(){
System.out.println("show当作输出number的值:"+number);
}
}
示例代码运行截图
在方法体中定义一个result,发现main方法是使用不了result变量的,result只有在当前方法体里面才可以进行使用
示例代码
public class Practice {
static int number;
public static void main(String[] args) {
// String rs=result; main方法里面是拿不到result变量的
show();
}
public static void show(){
String result="加油!!!坚持就是胜利!!!";
for (int i = 0; i <5; i++) {
System.out.println(result+(i+1));
}
if(true){
System.out.println("进入if里面调用result的值为: "+result);
}
System.out.println("方法的最后,再次输出result的值为: "+result);
}
}
示例代码运行截图
c.1 循环遍历一个数组时候,你发现循环变量i是只能存在于for方法体中
c.2 涉及到两数交换时,if里面定义的temp变量也仅仅只存在于if那个对应的{}中
示例代码
public class Practice {
static int number;
public static void main(String[] args) {
int[] a={1,88,2,4};
for (int i = 0; i <a.length; i++) {
System.out.print(a[i]+" ");
}
//for循环外面是获取不到i的值的,你可以把注释去掉运行试试
//System.out.println(i);
int m=10,n=90;
//变量交换环节
System.out.println("\n交换前 m,n的值为: "+m+" "+n);
if(m<n){
int temp=m;
m=n;
n=temp;
}
System.out.println("交换后 m,n的值为: "+m+" "+n);
//System.out.println(temp);
//你会发现if外面是不能获取到temp的值的,temp的值只在它定义的那个if里面有效
}
}
示例代码运行截图
作用域查找规则:
内层作用域可以使用外层作用域的标识符
外层作用域不能使用内容作用域的标识符
分析:
内层可以使用外层,是因为外层的作用域是包含了内层部分的,而内层作用域仅存在当前的{},作用域并没有覆盖外层,因此,外层使用不了内层的作用域。