在Java语言中,根据定义变量位置的不用,可以将变量分为两大类:成员变量和局部变量。
成员变量包括:实例变量(不以static修饰)和类变量(以static修饰)
局部变量包括:形参(方法签名中定义的变量),方法局部变量(在方法内定义),代码块局部变量(在代码块中定义)
成员变量可以访问:类.类变量,实例.实例变量,实例.类变量
public class Person {
//实例变量和类变量的不同就是Static
public static String name;//类变量
public int age;//实例变量
public static void main(String[] args) {
// TODO Auto-generated method stub
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1.name+" "+p1.age);
p2.age = 20;
p2.name = "jack";
System.out.println(p2.name+" "+p2.age);
}
}
类变量的作用域比实例变量的作用域更大,实例变量随实例的存在而存在,而类变量则随类的存在而存在。
形参:在定义方法签名时定义的变量,形参的作用域在整个方法内有效。
方法局部变量:在方法体内定义的局部变量,它的作用域是从定义该变量的地方生效,到该方法结束时实效。
代码块局部变量:在代码块中定义的局部变量,它的作用域从定义该变量的地方生效,到该代码块结束时实效。
Java允许局部变量和成员变量同名,如果方法里的局部变量和成员变量同名,局部变量会覆盖成员变量,如果需要在这个方法里引用被覆盖的成员变量,则可以使用this或者类名作为调用者来限定访问成员变量。
当在程序中使用局部变量时,尽量缩小局部变量的范围,局部变量的作用范围越小,在内存停留的时间越短,程序运行的性能就越好