static
关键字在 Java 中有多种用途,主要用来修饰类的成员(包括变量、方法、内部类和代码块)。下面是 static
关键字的几种常见作用:
1. 静态变量(类变量)
- 定义 :用
static
修饰的变量属于类本身,而不是类的实例(对象)。这意味着所有的对象共享同一个静态变量。 - 用途:静态变量可以用于存储类的全局状态,所有类的实例都可以访问和修改这个变量。
- 示例:
java
public class Example {
static int counter = 0; // 静态变量
public Example() {
counter++;
}
}
2. 静态方法(类方法)
- 定义 :用
static
修饰的方法属于类本身,可以直接通过类名调用,而不需要创建类的实例。 - 用途:静态方法常用于不依赖于实例变量的方法,或者用于工厂方法、工具类方法等。
示例:
java
public class MathUtil {
public static int add(int a, int b) {
return a + b;
}
}
// 调用方式
int result = MathUtil.add(5, 10);
3. 静态代码块
- 定义 :静态代码块用于在类加载时执行一些静态初始化操作,只会执行一次。
- 用途:静态代码块通常用于初始化静态变量或者执行一次性操作。
- 示例
java
public class Example {
static int value;
static {
value = 42; // 静态代码块
}
}
4. 静态内部类
- 定义 :用
static
修饰的内部类不依赖于外部类的实例,可以直接通过外部类名访问。 - 用途:静态内部类通常用于封装不依赖于外部类实例的逻辑。
- 示例:
java
public class OuterClass {
static class InnerClass {
void display() {
System.out.println("This is a static inner class");
}
}
}
// 调用方式
OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.display();
5. 静态导入(Static Import)
- 定义 :通过
import static
可以导入类中的静态成员,使用时可以直接引用而不需要类名。 - 用途:静态导入常用于简化代码,使得引用类的静态成员时更加简洁。
- 示例:
java
import static java.lang.Math.PI;
import static java.lang.Math.sqrt;
public class Example {
public static void main(String[] args) {
System.out.println("PI: " + PI);
System.out.println("Square root of 4: " + sqrt(4));
}
}