在Java中,static关键字可以用来修饰类的成员变量和成员方法。它具有以下几种用法:
静态成员变量属于类本身,而不是属于类的实例对象。它在类加载时就会被初始化,并且所有的实例对象共享同一个静态变量。可以通过类名直接访问,不需要创建对象。
public class MyClass {
public static int count; // 静态成员变量
public static void main(String[] args) {
MyClass.count = 10; // 直接通过类名访问静态变量
System.out.println(MyClass.count);
}
}
静态成员方法可以直接通过类名调用,无需创建类的实例对象。静态方法中只能访问静态成员变量和调用其他静态成员方法,不能直接访问非静态成员变量和调用非静态成员方法。
public class MyClass {
public static void printCount() { // 静态成员方法
System.out.println(MyClass.count);
}
public static void main(String[] args) {
MyClass.count = 10; // 直接通过类名访问静态变量
MyClass.printCount(); // 直接通过类名调用静态方法
}
}
静态代码块是在类加载时执行,只执行一次。可以用来初始化静态变量或执行其他一次性的任务。
public class MyClass {
public static int count; // 静态成员变量
static { // 静态代码块
count = 10;
System.out.println("静态代码块执行");
}
public static void main(String[] args) {
System.out.println(MyClass.count);
}
}
需要注意的是,静态成员变量和静态成员方法可以通过类名直接访问,不需要创建对象,而非静态成员变量和非静态成员方法需要通过对象来访问。