static关键字
用于修饰成员变量和成员函数
被static修饰的变量称为静态变量
被static修饰的方法称为静态方法
被修饰后的成员具备以下特点:
1.随着类的加载而加载
2.优先于对象而存在计算机的内存中
3.被所有的对象所共享
4.一旦被static修饰,如果想要访问他,就可以用(类名.属性)的形式
class Student{
String name;//实例变量,成员变量
int age;
static String school = "坚磐学院";//静态变量,类变量
Student(String name, int age){
this.name = name;
this.age = age;
return;
}
public void show(){
System.out.println(name + "," + age + "岁,毕业于" + school);
}
}
class Demo{
public static void main(String[] args){
Student s1 = new Student("zs",19);
s1.show();
Student s2 = new Student("lisi",20);
s2.show();
System.out.println(Student.school);//类名.属性
}
}
成员变量和静态变量区别:
1.储存位置不同
成员变量存在堆内存中,是对象的特有属性,静态变量存在静态代码区,也是方法区,被所有对象共享
2.调用方式不同
成员变量是通过(对象.属性)调用,静态变量可以通过(对象.属性)调用,也可以通过(类名.属性)调用
3.生命周期不同
成员变量是随着对象的产生而产生,随着对象的消失而消失,静态变量是随着类的产生而产生,随着类的消失而消失(意味着会一直保留)
4.别名不同
成员变量也叫实例变量,静态变量也叫类变量
注意:
1.静态成员只能访问静态成员(非静态的既可以访问静态的,也可以访问非静态的,)
2.静态方法中不能使用this或者super