Java中用static修饰的方法叫静态方法,它属于类本身,不依赖对象实例就能调用,只能直接访问静态成员,不能使用this或super,也不能调用非静态成员。

Java中用static修饰的方法叫静态方法,它属于类本身,不依赖对象实例就能调用。关键点是:静态方法只能直接访问静态成员(静态变量、其他静态方法),不能直接使用this或super,也不能调用非静态成员。
静态方法的定义与调用方式
定义时在返回类型前加static关键字:
public static void printInfo() {
System.out.println("这是静态方法");
}
调用时无需创建对象,直接通过类名.方法名():
立即学习“Java免费学习笔记(深入)”;
MyClass.printInfo();
也可以用对象引用调用(不推荐),如obj.printInfo(),但编译器会警告——本质仍是类调用,和对象无关。
静态方法能访问哪些成员?
静态方法运行时可能早于任何对象创建,因此受限明显:
- ✅ 可访问本类的
static变量和其他static方法 - ✅ 可访问其他类的
public static成员(如Math.abs()) - ❌ 不能直接访问本类的非静态变量或非静态方法(编译报错)
- ❌ 不能使用
this、super关键字
若真需用实例成员,必须显式传入对象引用,例如:public static void process(User u) { System.out.println(u.getName()); }
常见使用场景与注意事项
静态方法适合封装与类逻辑相关、但不依赖状态的操作:
-
工具类方法:如
StringUtils.isEmpty()、CollectionUtils.isNotEmpty() - 工厂方法:如
LocalDateTime.now()、Optional.of() - 主入口方法:
public static void main(String[] args)必须是静态的
注意:静态方法无法被重写(override),子类定义同签名静态方法只是隐藏(hiding),调用取决于引用类型而非实际对象类型。
静态方法与实例方法的区别简记
可以这样理解:
- 静态方法 = “类级别”的功能,像公司公告栏,谁都能看,不依赖员工身份
- 实例方法 = “对象级别”的行为,像员工工牌,必须先有员工(对象)才能使用
所以,设计时问自己:这个操作是否需要访问当前对象的状态?需要→用实例方法;不需要→可考虑静态方法。










