static关键字
java中static可以修饰变量、方法和代码块
静态变量
- static定义的变量是属于类的,该类所有对象公用一个静态变量。
- 非静态方法可以访问静态变量
- 静态方法不能够直接访问非静态变量,但是可以直接访问静态变量。(因为当静态变量创建时,非静态变量未必被创建。)
public class StaticTest {
public static int num;
public static void add(){
num++;
}
}
- static变量存储在方法区。
- 在类加载时就加载静态信息。
- 静态变量比非静态变量生命周期更长;静态变量和类的生命周期相同;非静态变量的生命周期和所属对象相同。
- 静态变量可以通过类名直接调用。
静态方法
- 可以直接访问静态变量和静态方法。
- 可以通过类名调用,也可以通过对象名调用。
- 非静态方法可以访问静态方法。
- 静态方法不可以访问非静态方法和非静态变量,并且不可以使用this关键字。
静态代码块
- 加载类时执行,一个类只加载一次,并且最先加载。
- 创建对象时,先执行(成员)代码块,后执行构造方法。