static关键词


“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”

上面的话体现了static的基本作用:通过static可以在不创建对象的情况下调用变量和方法

  1. static变量
    静态变量被所有的对象所共享,在内存中只占用一份存储区域(无论创建多少次对象,方法和代码块同理),当且仅当类第一次加载时而被初始化。
  2. static方法
    静态方法可以不依赖任何对象来进行调用,因此静态方法不存在this。由于这个特性:在静态的方法中不能调用类的非静态成员变量和非静态成员方法,非静态的成员变量和方法只能通过创建对象来进行调用。但是在非静态方法里面是可以调用静态方法和变量。
  3. static代码块
    静态代码块用来优化代码性能。static代码块可以放在类的任何地方。在类初次加载的时候按顺序执行代码块,并且只会执行一次
  4. 构造器是否是静态方法
    构造器是一个特殊的静态方法,因为构造器就不是一个方法。但是因为实例构造器无法被重写,不存在多态,所以实例构造器也可以说是”静态“的。

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