第一章 面向对象
第二章 异常
第三章 数组
第四章 常用类
第五章 集合
第六章 IO流
第七章 线程
第八章 反射
第九章 Socket编程

java变量作用域

 

所谓变量的作用域就是变量的有效范围。通过后面内容的学习大家会更加明白,实际上局部变量、实例变量、静态变量它们存储在Java虚拟机的不同内存区域上,所以变量是有作用域的。

关于变量的有效范围,在这里我给大家总结了一个口诀:出了大括号就不认识了。虽然这句话属于大白话,但很实用。我们来测试一下:

 

public class VarTest05 {
	//后面会学习为什么这里的变量定义为静态变量
	static int i = 1000;
	public static void main(String[] args) {
		System.out.println("k = " + k);
		int k = 100;
		System.out.println("k = " + k);
		int i = 2000;
		System.out.println("i = " + i);
	}
	//后面会学习方法怎么定义
	public static void m1(){
		System.out.println("k = " + k);
	}
	public static void m2(){
		System.out.println("i = " + i);
	}
}

 

 

编译报错了:

 

图3-6:变量的作用域

 

通过以上的测试我们发现:

 

  • 方法体当中的代码是有执行顺序的,遵循自上而下的顺序依次逐行执行,变量在没有声明的时候是不能访问的,需要先声明,接下来才能访问。
  • 另外在main方法中声明的变量k有效范围是main方法,只能在main方法中使用,出了大括号就不认识了,在m1方法中是无法访问的。
  • 在类体当中声明的变量i作用域是整个类体,所以在m2方法中是可以使用的。

 

修改以上代码并运行:

 

public class VarTest05 {
	//后面会学习为什么这里的变量这个时候定义为静态变量
	static int i = 1000;
	public static void main(String[] args) {
		//System.out.println("k = " + k);
		int k = 100;
		System.out.println("k = " + k);
		int i = 2000;
		System.out.println("i = " + i);
	}
	//后面会学习方法怎么定义
	public static void m1(){
		//System.out.println("k = " + k);
	}
	public static void m2(){
		System.out.println("i = " + i);
	}
}

 

运行结果如下图所示:

 

图3-7:变量作用域

 

通过以上程序的运行结果得知,java是遵循就近原则的,在类体当中有i变量,在main方法中声明了i变量,那么在main方法中一定访问离自己最近的变量,也就是就近取材,这就是就近原则,几乎所有的编程语言都是这样的。

全部教程