这篇博文是本人在学习过程中,发现的一种很奇怪的代码块的书写格式,但是,在本人在网页上查找相关内容时,发现给出的解释几乎各有其说,于是,本人通过和家师讨论 以及 上机的反复验证,得出了正确的、合理的结论。现在专门写一篇博文,来告知同学们这两种代码书写格式的相关知识点。
静态块:
静态块 具有如下特征:
1.书写格式如下:
static {
代码段;
}
2.静态块 必须且仅执行一次:当该类初次被加载时,就会被执行,而且,当我们之后再使用包含这个静态块的类的时候,就不会再执行这块的代码了;
3.静态块,和本人之后的博文所讲的 线程安全问题 密切相关;
4.静态块中 能够被调用的 成员 和 方法,和 静态方法中能出现的 成员 和 方法 的要求一样:已被初始化过的,或者有 static 或者 final 修饰过的成员或方法。
本地块:
本地块的要求就没有那么多了,它的大致特征只有如下几点:
1.书写格式:
{
代码段;
}
2.本地块,在我们 new包含这个本地快的类 的时候 就会被执行;
3.本地块中所出现的 成员 ,必须是已经被初始化过的对象(即:不能在静态块中new 类的对象)。
那么,为了证明上述的说法,本人现在通过一个例子来验证:
首先,本人给出一个类,这个类中既包含了静态块,也包含着本地块:
package com.mec.about_xml.parse.test;
public class AboutNativeBlock {
public static int num = 10;
{
System.out.println("这是一个本地块");
}
static {
System.out.println("这是一个静态块");
}
public AboutNativeBlock() {
}
public void fun() {
System.out.println("执行fun()方法");
}
}
现在,本人给一个测试类:
package com.mec.about_xml.parse.test;
public class Test {
public static void main(String[] args) {
System.out.println(AboutNativeBlock.num);
System.out.println("---------------------");
AboutNativeBlock aboutNativeBlock1 = new AboutNativeBlock();
System.out.println("---------------------");
aboutNativeBlock1.fun();
System.out.println("---------------------");
AboutNativeBlock aboutNativeBlock2 = new AboutNativeBlock();
aboutNativeBlock2.fun();
new AboutNativeBlock();
}
}
下面,我们看一下运行结果:
这样看来,本人的说法完全正确!
(看来啊,别人的说法未必是正确的说法,只有自己上机验证出的结果才是真正正确的结果啊)
由于在网上搜索这个知识点时,可能会出现 局部代码块 和 构造代码块 这两个名词
那么,现在,本人对于以上的两个知识点进行一下扩充:
- 首先,所谓的 “构造代码块” 就是本人在上面提到的 “本地块”;
- 其次,
局部代码块 :
在方法中出现;限定变量生命周期,及早释放,提高内存利用率
(这种代码块出现几率很小,一般不会有什么特殊的要求,都没有使用的必要)
构造代码块 :
在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
那么,本篇博文的全部内容本人就讲解完成了。
若对这篇博文有任何疑问或者意见以及建议,请在下方评论区提出,本人将尽早予以讲解以及答复,喜欢的同学请留下你们的赞,谢谢!!!