静态块 与 本地块

这篇博文是本人在学习过程中,发现的一种很奇怪的代码块的书写格式,但是,在本人在网页上查找相关内容时,发现给出的解释几乎各有其说,于是,本人通过和家师讨论 以及 上机的反复验证,得出了正确的、合理的结论。现在专门写一篇博文,来告知同学们这两种代码书写格式的相关知识点。

静态块:

静态块 具有如下特征:
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();
	}

}

下面,我们看一下运行结果:
在这里插入图片描述这样看来,本人的说法完全正确!
(看来啊,别人的说法未必是正确的说法,只有自己上机验证出的结果才是真正正确的结果啊)

由于在网上搜索这个知识点时,可能会出现 局部代码块 和 构造代码块 这两个名词
那么,现在,本人对于以上的两个知识点进行一下扩充:

  • 首先,所谓的 “构造代码块” 就是本人在上面提到的 “本地块”;
  • 其次,
    局部代码块
    方法中出现;限定变量生命周期,及早释放,提高内存利用率
    (这种代码块出现几率很小,一般不会有什么特殊的要求,都没有使用的必要)
    构造代码块
    类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行

那么,本篇博文的全部内容本人就讲解完成了。
若对这篇博文有任何疑问或者意见以及建议,请在下方评论区提出,本人将尽早予以讲解以及答复,喜欢的同学请留下你们的赞,谢谢!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值