static 关键字
概述
static
关键字用于定义属于类而不是实例的成员,可以在不创建对象的情况下访问。
语法格式
public static int variable; // 静态变量
public static void method() { } // 静态方法
static { /* 初始化代码 */ } // 静态初始化块
public static class InnerClass { } // 静态内部类
基本用法
静态变量和方法
public class MathUtils {
// 静态常量
public static final double PI = 3.14159265359;
// 静态变量
private static int calculationCount = 0;
// 静态方法
public static double calculateCircleArea(double radius) {
calculationCount++;
return PI * radius * radius;
}
public static int getCalculationCount() {
return calculationCount;
}
// 静态初始化块
static {
System.out.println("MathUtils类被加载");
calculationCount = 0;
}
}
public class StaticExample {
public static void main(String[] args) {
// 直接通过类名访问静态成员
System.out.println("PI = " + MathUtils.PI);
double area = MathUtils.calculateCircleArea(5.0);
System.out.println("圆面积: " + area);
System.out.println("计算次数: " + MathUtils.getCalculationCount());
}
}
静态内部类
public class OuterClass {
private static String staticField = "静态字段";
// 静态内部类
public static class StaticInnerClass {
public void display() {
System.out.println("可以访问外部类的静态成员: " + staticField);
// System.out.println(instanceField); // 错误:不能访问实例成员
}
}
public static void main(String[] args) {
// 创建静态内部类实例
OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
inner.display();
}
}
最佳实践
工具类设计:
public class StringUtils { private StringUtils() { } // 私有构造器 public static boolean isEmpty(String str) { return str == null || str.length() == 0; } }
单例模式:
public class Singleton { private static Singleton instance = new Singleton(); private Singleton() { } public static Singleton getInstance() { return instance; } }
static关键字是Java编程中的重要概念,用于创建类级别的成员和实现特定的设计模式。