在Java中,static是一个关键字,用于修饰类的成员(字段和方法),及内部类(静态内部类)
使用static关键字可以方便的定义和访问与类相关而与实例无关的成员
1、静态成员:
使用static修饰的成员属于类本身,而不是类的实例,静态成员在内存中只有一份拷贝,被所有类的实例共享
public class Student {
public static int staticVariable; //静态成员变量
public static void setStaticMethod(){ //静态方法
//方法的定义
}
}
2、静态访问:
可以通过类名直接访问静态成员,无需创建类的实例(类名.静态成员名/静态方法名)
int variable = MyClass.staticVariable; // 通过类名访问静态变量
MyClass.staticMethod(); // 通过类名调用静态方法
3、静态块:
static关键字还可以用于定义静态块(静态初始化块),静态块在类加载时执行一次,用于进行=类的初始化操作
public class MyClass {
static {
// 静态块的初始化
}
}
4、静态内部类:
static关键字还可以用于定义静态内部类,静态内部类不依赖于外部类的实例,可以直接访问外部类的静态成员
public class OuterClass {
public static class InnerStaticClass {
// 静态内部类的定义
}
}
//静态初始化代码块在类被加载时只执行一次,且只能能访问类的静态变量和方法
5、静态导入:
static还可以用于静态导入,使得在代码中可以直接使用静态成员,而无需通过类名限定
import static com.example.my_package.MyClass.staticMethod; // 静态导入
注意:
静态成员不能直接访问非静态实例成员,因为非静态成员属于对象实例而非类本身
在实例方法中可以直接调用类中定义的静态变量和静态方法