当前位置:首页 > 行业动态 > 正文

java静态代码块和静态变量

Java静态代码块和静态变量是Java编程中的重要概念,它们在类加载时执行,且只会执行一次,本文将详细介绍Java静态代码块和静态变量的概念、特点、用法以及实例。

静态变量

1、概念

静态变量(Static Variable)是一种特殊的成员变量,它属于类而不是类的实例,静态变量在类加载时分配内存空间,且只会分配一次,所有实例共享同一个静态变量的值。

2、特点

静态变量属于类,而不是类的实例。

静态变量在类加载时分配内存空间,且只会分配一次。

所有实例共享同一个静态变量的值。

静态变量可以通过类名直接访问,也可以通过实例访问。

3、用法

静态变量通常用于存储类的全局状态或常量。

public class MyClass {
    public static int num = 0; // 定义一个静态变量num
}

4、实例

public class MyClass {
    public static int num = 0; // 定义一个静态变量num
    public static void main(String[] args) {
        MyClass obj1 = new MyClass();
        MyClass obj2 = new MyClass();
        obj1.num = 10; // 修改静态变量的值
        System.out.println("obj1.num: " + obj1.num); // 输出:obj1.num: 10
        System.out.println("obj2.num: " + obj2.num); // 输出:obj2.num: 10
    }
}

静态代码块

1、概念

静态代码块(Static Block)是一种特殊的代码块,它在类加载时执行,且只会执行一次,静态代码块通常用于初始化静态变量或执行其他需要在类加载时完成的操作。

2、特点

静态代码块在类加载时执行,且只会执行一次。

静态代码块可以访问静态变量和其他静态代码块。

静态代码块不能访问非静态成员(如实例变量和普通方法)。

3、用法

静态代码块通常用于初始化静态变量或执行其他需要在类加载时完成的操作。

public class MyClass {
    public static int num = 0; // 定义一个静态变量num
    static { // 定义一个静态代码块
        num = 10; // 初始化静态变量的值
        System.out.println("静态代码块执行"); // 输出:静态代码块执行
    }
}

4、实例

public class MyClass {
    public static int num = 0; // 定义一个静态变量num
    static { // 定义一个静态代码块
        num = 10; // 初始化静态变量的值
        System.out.println("静态代码块执行"); // 输出:静态代码块执行
    }
    public static void main(String[] args) {
        System.out.println("main方法执行"); // 输出:main方法执行
        System.out.println("num: " + num); // 输出:num: 10
    }
}

静态代码块与静态变量的区别与联系

1、区别:

作用不同:静态变量用于存储类的全局状态或常量,而静态代码块用于初始化静态变量或执行其他需要在类加载时完成的操作。

执行时机不同:静态变量在类加载时分配内存空间,而静态代码块在类加载时执行,但只有当静态代码块被执行时,才会对静态变量进行初始化。

访问权限不同:静态变量可以通过类名直接访问,也可以通过实例访问;而静态代码块只能通过类名访问。

生命周期不同:静态变量的生命周期与类相同,只要类存在,静态变量就存在;而静态代码块只在类加载时执行一次,之后不再执行。

2、联系:

都是属于类的成员,而不是类的实例。

都可以在类加载时执行特定的操作。

0