本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看 活动链接
前言
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概念,我们很好的熟悉了。那么,更应该熟悉的是我们对于学习时的方式方法。多结合例子,相信会有很好的帮助