java中变量的作用域
变量一定会被定义在某一对大括号中,该大括号所包含的代码区便是这个变量的作用域。变量分为四个级块:类级 ,对象实例级 ,方法级 ,块级
类级:所谓的全局变量,需要使用static关键字来修饰。类级变量在定义后,可以直接通过变量名来访问,不需要实例化。有默认的初始值。
对象实例级: 成员变量,从名字就可以知道,需要实例化后才可以访问。成员变量是定义在方法之外,类之内的。成员变量随着对象的创建而存在,随着对象的消失而消失。有默认的初始值。
方法级: 局部变量,方法内定义的变量,没有默认的初始值。
块级: 定义在一个块内的变量,变量的生存周期就是在这个块,出了这个块就不能访问了,比如if,for语句块,没有默认的初始值。
下面是例子:
public class Text {
static int a; //全局变量 (类级)
int b; //成员变量(对象实例级)要实例化才能用
public static void main(String[] args) {
int c = 0; //局部变量(方法级) 没有默认的初始值
Text text = new Text(); //构造Text类的一个实例
for (int i = 0; i < args.length; i++) {
//i为块级变量 没有默认的初始值
System.out.println(a);
System.out.println(text.b);
System.out.print(c);
System.out.println(i);
}
{
int d = 1; //块变量
System.out.println(a);
System.out.println(text.b);
System.out.println(c);
System.out.println(d);
}
class myclass1 {
private void myclass() {
int c1 = 0;
System.out.println(a);
System.out.println(text.b);
System.out.println(c);
System.out.println(c1);
}
}
}
}
class myclass2 {
private void myclass2() {
System.out.println("a,b,c,d,c1都不能打印");
}
}