王尘宇王尘宇

研究百度干SEO做推广变成一个被互联网搞的人

Java中static块的执行时机及其作用详解


什么是static块

在Java中,static块是一个用static关键字修饰的代码块,它可以在类被加载时执行,也可以在类被实例化之前执行。static块可以用于初始化静态变量、执行一些静态操作或者做一些预处理工作。static块的语法如下:

```java

static {

// static块中的代码

}

```

static块的执行时机

static块的执行时机是在类被加载时执行,而类的加载时机是在以下三种情况下会触发:

1. 创建类的实例

2. 访问类的静态变量或方法

3. 使用反射方式加载类

当Java虚拟机(JVM)在第一次加载类时,会执行类中所有的静态代码块,包括static变量的初始化和静态方法的执行。此后,每次访问类的静态变量或方法时,不会再执行static块。

static块的作用

static块可以用于静态变量的初始化、静态方法的执行以及一些预处理工作。下面分别介绍static块的这三个作用。

1. 静态变量的初始化

静态变量是在类被加载时初始化的,因此可以在static块中进行初始化操作。例如:

public class MyClass {

public static int num;

static {

num = 10;

}

在上面的例子中,当MyClass类被加载时,static块会执行,将num变量的值初始化为10。

2. 静态方法的执行

static块也可以用于执行一些静态方法,例如:

init();

public static void init() {

// 静态方法的具体实现

在上面的例子中,当MyClass类被加载时,static块会执行,执行init()方法。

3. 预处理工作

static块还可以用于做一些预处理工作,例如读取配置文件、连接数据库等。例如:

public class Config {

public static String DB_URL;

public static String USERNAME;

public static String PASSWORD;

// 读取配置文件

Properties props = new Properties();

try {

InputStream in = Config.class.getResourceAsStream("/config.properties");

props.load(in);

DB_URL = props.getProperty("db.url");

USERNAME = props.getProperty("db.username");

PASSWORD = props.getProperty("db.password");

} catch (IOException e) {

e.printStackTrace();

}

// 连接数据库

Class.forName("com.mysql.jdbc.Driver");

Connection conn = DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);

// ...

} catch (ClassNotFoundException | SQLException e) {

在上面的例子中,static块会读取配置文件并连接数据库。

总结

static块是一个用static关键字修饰的代码块,它可以在类被加载时执行,也可以在类被实例化之前执行。static块可以用于初始化静态变量、执行一些静态操作或者做一些预处理工作。

上一篇: ps怎么画 横线

相关文章

评论列表

发表评论:
验证码

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。