(1)static关键字:
用于修饰成员变量(类变量)和成员函数。
(2)被修饰后的成员具有以下特点:
- 可以直接被类名调用。/或者说,多了一种调用方式,类名.成员。
- static修饰的成员,优于对象先存在在计算机内存中,随着类的加载而存在。
- 优先于对象存在。
- 被所有对象所共享。
(3)注意:
静态方法只能访问静态成员。
静态方法中不可以写this,super关键字。(因为static不依赖于对象,而this依赖于对象)
主函数是静态的。
非静态成员既可以访问非静态成员也可以访问静态成员。
(4)添加static关键字后的测试:
class Student{
static String name="Huahudiediedie";//实例变量
static int age=19;
static String school="郑州大学";//类/静态变量
Student(String name ,int age){
this.name=name;
this.age=age;
}
public static void show(){
System.out.println(name+","+age+"岁,毕业于"+school);
}
}
class StaticDemo{
public static void main(String[] args){
Student s=new Student("laoyao",20);
s.show();
System.out.println(Student.name);//类名.属性√
System.out.println(Student.school); //类名.属性√
Student.show();//类名.方法√
}
}
显示结果:
(5)成员变量和静态变量的区别?
1.存储位置不同
成员变量存在于堆内存中(对象的特有数据)。
静态变量存在在静态方法区(所有对象共享的数据)。
2.调用方式不同:
成员变量:对象.成员
静态变量:既可以通过对象调用,也可以通过类名调用。
3.生命周期不同:
成员变量:依赖对象。
静态变量:依赖类