Java的变量作用域

来自CloudWiki
Cloud17讨论 | 贡献2018年3月27日 (二) 23:47的版本
跳转至: 导航搜索

变量作用域

变量作用域是变量可以使用的范围,取决于变量声明的位置。Java 变量的范围有四个级别:类级、对象实例级、方法级、块级。

  • 类级变量又称全局级变量,在对象产生之前就已经存在,即用static修饰的属性。
  • 对象实例级,就是属性变量。
  • 方法级:就是在方法内部定义的变量,就是局部变量。
  • 块级:就是定义在一个块内部的变量,变量的生存周期就是这个块,出了这个块就消失了,比如if、for语句的块。

【实例3-7】变量作用域演示程序设计。

public class TestVariable {
	private static String name = "类级";// 类级
	private int i; // 对象实例级
	
        public TestVariable(int i){
             this.i = i;
        }
	public void test1() {
		int j = 4;// 方法级
		if (j == 4) {
			int k = 5;// 块级
		}
		// 这里不能访问块级的变量,块级变量只能在块内部访问
		System.out.println("name=" + name + ",i=" + i + ",j=" + j);
	}
	public static void main(String[] args) {
		TestVariable t = new TestVariable(2);
		t.test1();
		TestVariable t2 = new TestVariable(3);
                t2.test1();
	}
}

程序运行结果如下:

name=类别,i=0,j=4

若局部变量与类的成员变量同名,则类的成员变量被隐藏。下面的例子说明了局部变量z和类成员变量z的作用域是不同的。

【实例3-8】同名变量作用域测试程序设计。

public class Variable {
	int x = 0, y = 0, z = 0;// 类的成员变量
	void init(int x, int y) {
		this.x = x;
		this.y = y;
		int z = 3; // 局部变量
		System.out.println("** in init**" + "x=" + x + " y=" + y + " z=" + z);
	}
}
public class VariableTest {
	public static void main(String args[]) {
		Variable v = new Variable();
		System.out.println("**before init**" + "x=" + v.x + " y=" + v.y + "z="+ v.z);
		v.init(10, 15);
		System.out.println("**after init**" + "x=" + v.x + " y=" + v.y + "z="+ v.z);
	}
}

运行程序结果如下。

**before init**x=0 y=0 z=0
** in init **x=10 y=15 z=3
**after init**x=10 y=15 z=0

返回 Java程序设计