static关键词
“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”
上面的话体现了static的基本作用:通过static可以在不创建对象的情况下调用变量和方法
- static变量
静态变量被所有的对象所共享,在内存中只占用一份存储区域(无论创建多少次对象,方法和代码块同理),当且仅当类第一次加载时而被初始化。 - static方法
静态方法可以不依赖任何对象来进行调用,因此静态方法不存在this。由于这个特性:在静态的方法中不能调用类的非静态成员变量和非静态成员方法,非静态的成员变量和方法只能通过创建对象来进行调用。但是在非静态方法里面是可以调用静态方法和变量。 - static代码块
静态代码块用来优化代码性能。static代码块可以放在类的任何地方。在类初次加载的时候按顺序执行代码块,并且只会执行一次。 - 构造器是否是静态方法
构造器是一个特殊的静态方法,因为构造器就不是一个方法。但是因为实例构造器无法被重写,不存在多态,所以实例构造器也可以说是”静态“的。
public class Test { static{ System.out.println("test static 1"); } public static void main(String[] args) { } static{ System.out.println("test static 2"); } }
输出
test static 1
test static 2