在Java中,变量的作用域分为四个块级:类级,对象实例级,方法级,块级。
类级变量就是所谓的全局变量,需要使用static关键字来修饰。类级变量在定义后,可以直接通过变量名来访问,不需要实例化。
对象实例级就是成员变量,通过名字就知道,需要实例后才能访问。
方法级变量就是在方法内定义的变量,就是局部变量。
块级变量就是定义在一个块内部的变量,变量的生存周期就是这个块。出了这个块,就不能访问这个变量了。比如if,for语句块。
方法内部除了能方位方法级变量,还可以访问类级和对象实例级变量。
块内部能够访问类级、对象实例级变量,如果块被包括在方法中,还可以访问方法级的变量。
public class Demo{
public static String name = "Demo"; // 类级变量
public int i; // 对象实例级变量
// 属性块,在类初始化属性时候运行
{
int j = 2;// 块级变量
}
public void test1() {
int j = 3; // 方法级变量
if(j == 3) {
int k = 5; // 块级变量
}
// 这里不能访问块级变量,块级变量只能在块内部访问
System.out.println("name=" + name + ", i=" + i + ", j=" + j);
}
public static void main(String[] args) {
// 不创建对象,直接通过类名访问类级变量
System.out.println(Demo.name);
// 创建对象并访问它的方法
Demo t = new Demo();
t.test1();
}
}
运行结果:
Demo
name=Demo,i=0,j=3