这个关键字时一个修饰符,它可以修饰成员变量和成员方法,也可以修饰内部类
被它修饰的成员变量叫做静态变量,修饰的方法叫做静态方法
静态变量和静态方法都可以通过 类名. 的方式来访问
public class Animal {
static String name;
static String getName() {
return name;
}
public static void main(String[] args) {
Animal animal = new Animal();
animal.name = "axx";
System.out.println(animal.getName());
Animal.name = "小狗";
System.out.println(Animal.getName());
}
}
注意:在程序中不能都用 static 关键字来修饰属性和方法
static 的生命周期
所谓生命周期就是对象从创建到消亡的过程。
如果我们的属性没有被 static 修饰,那么它的生命周期是在执
行
new 操作时才开始,直到这个对象使用完就结束。
如果我们的属性是被 static 修饰的,那么它的生命周期是在这个类加载到内存中后就开始,直到 JVM 关闭所以不
是所有的都需要使用这个关键字来修改,因为它的生命周期太长,
不便
于内存的回收。一般情况下,我们会在工具类别来使用这个关键字,便
于好使用这个方法。
一般来说,我们使用了 static 来修饰变
量
时,我们通过会再与 final 这个关键字一起。这个关键字后续再介绍。
使用 static 的注意事项
public class Animal {
private int age;
static String name;
static String getName() {
this.age = 18;
return name;
}
}
在上面的代码中的 getName() 静态方法内使用的 this 这个关键字,发现要报如下的错误:
'com.openlab.entity.Animal.this' cannot be referenced from a static context
这个错误信息的意思是 this 关键字
不
能使用在静态代码块中。
原因:this 代表的对象, 而对象是在 new 操作时才产生,而被 static 修饰的属性或方法是在类加载时就已经存在了,所以他们的生命周期不一样,即被 static 修饰的生命周期早于 this 对象的生命周期,所以会报错
注意:在静态方法中不能使用 this 关键字,当然也不能使用 this 来调用构造方法,如果希望在静态方法中使用成员变量,那么这个成员变量也应该是静态的