java-代码块以及代码块执行顺序

代码块:
用{}括起来的代码。
根据{}的位置可以分为
局部代码块:方法中,局部位置,作用:限定变量作用范围和生命周期。

构造代码块:在类中方法外(成员位置),用{}括起来的代码。

每次调用构造方法执行前,都会执行构造代码块,

作用:把类中不同构造方法中相同的部分提取出来定义到构造代码块中,以后无论调用哪个构造方法都会执行相同操作。可以理解对对象初始化。

静态代码块:在类中方法外(成员位置),用{}括起来,用static修饰。作用:给类进行初始化。

代码块执行顺序:
静态代码块》构造代码块》构造方法

静态代码块:只执行一次

构造代码块:每次创建该类对象,调用构造方法就执行,先于构造方法。

下面通过一个案例进行解析:

package day08;

public class DaiMaKuai {
	static {
		System.out.println("大家好我是静态代码块!");
	}
	
	{
		
		System.out.println("大家好我是构造代码块!");

	}
	
	public DaiMaKuai(){
		System.out.println("大家好我是构造方法!");

	}

}

入口类:

package day08;

public class DaiMaKuaiDemo {

	static {
		System.out.println("河南科技大学!");
	}
	public static void main(String[] args) {
		System.out.println("洛阳牡丹甲天下!");
		
		//创建DaiMaKuai类对象
		System.out.println("-------------------------");
		DaiMaKuai dmk = new DaiMaKuai();
		System.out.println("-------------------------");
		DaiMaKuai dmk1 = new DaiMaKuai();

	}

}

输出:

河南科技大学!
洛阳牡丹甲天下!
-------------------------
大家好我是静态代码块!
大家好我是构造代码块!
大家好我是构造方法!
-------------------------
大家好我是构造代码块!
大家好我是构造方法!

解析:

通过输出结果可以看出,程序最先加载类执行入口类中的静态代码块打印输出“河南科技大学

然后接着执行main方法打印后面的程序语句“洛阳牡丹甲天下”,

接着创建DaiMaKuai类的对象加载类执行该类中的静态代码块输出“大家好我是静态代码块!”

接着执行构造代码块输出“大家好我是构造代码块!”

最后执行构造方法输出“大家好我是构造方法!”,

接着又创建一个对象,注意这时静态代码块不再执行(只加载一次)

直接执行构造代码块输出“大家好我是构造代码块!”

最后执行构造方法输出“大家好我是构造方法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值