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;
}
}注意:
- 静态方法不能直接访问实例变量和实例方法。
- 静态方法中不能使用
this和super。 - 工具方法常写成
static,如Math.max()。
static 代码块
静态代码块在类加载时执行一次,常用于初始化静态资源。
class Config {
static {
System.out.println("类加载时执行");
}
}static 与内存理解
- 实例成员:每个对象一份。
- 静态成员:类一份,所有对象共享。
常见误区
static不是“更高级”,只是归属不同。- 可以用对象访问静态成员,但不推荐,容易让人误以为它属于对象。
- 静态方法不能被真正重写,只能被隐藏;这与多态中的动态绑定不同。