static关键字

static 表示“属于类本身”,而不是属于某一个对象。

static 成员变量

静态成员变量被所有对象共享,随类加载而存在。

class Student {
    static String school = "YNU";
    String name;
}
  • school 属于 Student 类。
  • 每个对象都有自己的 name
  • 推荐使用 类名.静态成员 访问,例如 Student.school

static 方法

静态方法属于类,可以不创建对象直接调用。

class MathUtil {
    static int add(int a, int b) {
        return a + b;
    }
}

注意:

  • 静态方法不能直接访问实例变量和实例方法。
  • 静态方法中不能使用 thissuper
  • 工具方法常写成 static,如 Math.max()

static 代码块

静态代码块在类加载时执行一次,常用于初始化静态资源。

class Config {
    static {
        System.out.println("类加载时执行");
    }
}

static 与内存理解

  • 实例成员:每个对象一份。
  • 静态成员:类一份,所有对象共享。

常见误区

  • static 不是“更高级”,只是归属不同。
  • 可以用对象访问静态成员,但不推荐,容易让人误以为它属于对象。
  • 静态方法不能被真正重写,只能被隐藏;这与多态中的动态绑定不同。

相关:类与对象final关键字内部类与异常类