一、static关键字的含义
static 关键字用于修饰类成员,包括变量和方法。被 static 修饰的成员属于类本身,而不是类的任何一个具体对象。这意味着:
静态成员只存在一份: 无论创建多少个该类的对象,静态成员都只分配一次内存空间,所有对象共享同一个静态成员。
静态成员可以通过类名直接访问: 不需要创建对象,可以直接通过类名访问静态成员。
二、static关键字的作用
创建类变量: static 变量被称为类变量,它属于类本身,所有对象共享同一个类变量。
class MyClass {
static int count = 0; // 类变量,所有对象共享
}
创建类方法: static 方法被称为类方法,它属于类本身,可以直接通过类名调用,无需创建对象。
class MyClass {
static void printMessage() { // 类方法
System.out.println("Hello from static method!");
}
}
初始化静态块: static 块用于在类加载时执行一些初始化操作,例如初始化静态变量或加载资源。
class MyClass {
static {
System.out.println("类加载时执行的静态块");
}
}
三、static关键字的应用场景
单例模式: 使用 static 变量和 static 方法实现单例模式,确保一个类只有一个实例。
class Singleton {
private static Singleton instance = new Singleton(); // 静态变量保存单例实例
private Singleton() {} // 私有构造函数,禁止外部创建实例
public static Singleton getInstance() { // 类方法获取单例实例
return instance;
}
}
工具类: 使用 static 方法创建工具类,提供一些通用的功能方法,例如数学计算、日期处理、字符串操作等。
class Math {
public static int sum(int a, int b) { // 静态方法
return a + b;
}
}
常量定义: 使用 static final 定义常量,例如:
class Constants {
public static final double a = 3.1415926; // 静态常量
}
四、static关键字的注意事项
static 变量和方法在类加载时被初始化,优先于对象的创建。
static 方法不能访问非静态成员,因为 static 方法不依赖于任何对象。
static 变量和方法可以通过类名直接访问,也可以通过对象访问,但建议使用类名访问,避免混淆。