快速掌握:Java语言中static关键字的用法

发表时间: 2024-04-10 11:22

Java 中的 static 关键字用于定义类的成员,包括属性、方法和初始化代码块。

static的特点

  1. 共享性:可以被类的所有实例/对象共享。
  2. 静态属性
    在类加载时进行初始化。可以在不创建类的实例的情况下访问和修改。
  3. 静态方法
    不需要通过类的实例来调用。
  4. 静态初始化块
    初始化代码块是定义在方法外的代码块,用于创建对象时执行的初始化操作。
    静态初始化块是在类加载时执行的代码块。

实例

下面是一个static使用实例。

public class StaticExample {    // 实例属性    int instanceVariable = 1;    // 静态属性    static int staticVariable = 32;    // 静态初始化块    static {        System.out.println("执行了静态初始化块");        staticVariable = 2024;    }    // 构造器    public StaticExample() {    		System.out.println("instanceVariable初始值:" + instanceVariable);    		System.out.println("staticVariable:" + staticVariable);                this.instanceVariable ++;        staticVariable ++;    }    // 静态方法    static void staticMethod() {        staticVariable += 10;        System.out.println("执行了静态方法\n");    }    public static void main(String[] args) {    	for(int i = 0; i<5;i++){        StaticExample example = new StaticExample();        System.out.println("通过对象访问实例变量:" + example.instanceVariable);        System.out.println("使用类名访问静态变量:" + StaticExample.staticVariable);        StaticExample.staticMethod();       }    }}

在这个例子中,静态初始化块用于在类加载时进行一些初始化操作。
static属性在staticVariable类加载时初始化为32,但是接下来有一个静态初始化块,它会在类加载时继续执行,staticVariable会被修改为2024,之后不会在执行初始化操作了。

对比实例属性instanceVariable,在创建对象时初始化为1,每次创建一个新的对象都会初始化为1。

接下来执行构造器里的语句,instanceVariable和staticVariable加1。

代码的执行结果如下:

执行了静态初始化块instanceVariable初始值:1staticVariable:2024通过对象访问实例变量:2使用类名访问静态变量:2025执行了静态方法instanceVariable初始值:1staticVariable:2035通过对象访问实例变量:2使用类名访问静态变量:2036执行了静态方法instanceVariable初始值:1staticVariable:2046通过对象访问实例变量:2使用类名访问静态变量:2047执行了静态方法instanceVariable初始值:1staticVariable:2057通过对象访问实例变量:2使用类名访问静态变量:2058执行了静态方法instanceVariable初始值:1staticVariable:2068通过对象访问实例变量:2使用类名访问静态变量:2069执行了静态方法