首先先说一下static:
它表示“静态”,是一个修饰词用于修饰成员变量和方法。被它修饰过的变量和方法被称为静态变量和静态方法。
接下来我们来认识下static的功能:
一、当它修饰成员变量时:
成员变量一般可以按照是否被static修饰分为两种成员变量;
静态变量的功能:
1.在对象之间共享值:
举个栗子:假如我定义了一个学生类,他们有这些变量:国籍、姓名、性别,而你要用这个学生类,大家都是中国人,那么你每次new对象,实例化出一个学生时发现每次都要把国籍:“中国”写一遍,这样既浪费内存空间,又麻烦,这时候,static的作用就体现出来了,将 国籍 这个变量用static修饰后,那么每个对象实例化之后(注意,在类加载的过程中它已经存在,它会随着类的加载而加载,所以也叫类变量,并不是new对象时候才加载),就会共享 国籍 这个变量中的值,而且JVM只会为它分配一个内存空间,无论你new多少个对象。(既节省了内存,又减少了代码的重复);PS:被static修饰后他会变为一个类变量,可以直接被调用!
2.方便访问变量:
在类加载之后如果要调用静态变量,那么直接用类名去调用变量就可以了(类名.变量名)
静态方法的功能:
1.静态方法调用的方式和静态变量相似(类名.方法名),实例也可以调用它。
静态方法中只能调用所属类的静态变量和静态方法;由此可见静态方法中是不能出现this和super的,也就是说不能调用实例变量和实例方法。
静态方法是类内部的一种特殊方法,只有需要时才会将对应的方法声明为静态的。