为什么要使用静态初始化块?| Java Debug 笔记

342 阅读2分钟

本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接

image.png

前言

Java开发者,初学时,必然会学到静态初始化块这个概念。那么,静态初始化块,到底是什么呢,我们遇到了一个问题或者疑问,我们将要通过这个问题,来叙述静态初始化块的内容。

问题复现

其实遇到这个问题,估计是初学者必须遇到的问题。

对于大多数初学者来说,都会了解到静态初始化块是用来为静态成员设置值。

但是,其实大多数人不明白,为何会使用到这个静态初始化块。

比如,我们声明了一个没有分配值得静态成员。然后写几行静态初始化块,来进行变量赋值,值分配。

所以,我们很疑惑,为什么使用static{...}这种代码。

而且,我们很大程度上不明白,static{...}{...}的区别

问题解决

首先我们来先讲一下非静态初始化块是怎么回事。

{
    // Do Something...
}

静态初始化块仅会被执行一次,非静态初始化块会在每次对象创建时,都会进行创建。

例如:

public class Test {

    static{
        System.out.println("Static");
    }

    {
        System.out.println("Non-static block");
    }

    public static void main(String[] args) {
        Test t = new Test();
        Test t2 = new Test();
    }
}

方法执行,输出以下内容

Static
Non-static block
Non-static block

大概就是这个样子的,我们很好的看出来,他们之间的区别

那么,为啥要写这个呢。

很多原因,写这个是因为这个特点。比如

static {
    try {
        Class.forName("com.example.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        throw new ExceptionInInitializerError("Cannot load JDBC driver.", e);
    }
}

数据库的连接,肯定一次就解决了,其他的就不用了

总结

对于这个java概念,我们很好的熟悉了。那么,更应该熟悉的是我们对于学习时的方式方法。多结合例子,相信会有很好的帮助