静态代码块和实例代码块及代码执行顺序

静态代码块:

/*
	1、使用static关键字可以定义:静态代码块
	2、什么是静态代码块,语法是什么?
		static {
			java语句;
			java语句;
		}
	3、static静态代码块在什么时候执行呢?
		类加载时执行。并且只执行一次。
		静态代码块有这样的特征/特点。

	4、注意:静态代码块在类加载时执行,并且在main方法执行之前执行。

	5、静态代码块一般是按照自上而下的顺序执行。

	6、静态代码块有啥作用,有什么用?
		第一:静态代码块不是那么常用。(不是每一个类当中都要写的东西。)
		第二:静态代码块这种语法机制实际上是SUN公司给我们java程序员的一个特殊的时刻/时机。
		这个时机叫做:类加载时机。

	具体的业务:
		项目经理说了:大家注意了,所有我们编写的程序中,只要是类加载了,请记录一下
		类加载的日志信息(在哪年哪月哪日几时几分几秒,哪个类加载到JVM当中了)。
		思考:这些记录日志的代码写到哪里呢?
			写到静态代码块当中。
		
*/
public class StaticTest06{

	// 静态代码块(特殊的时机:类加载时机。)
	static {
		System.out.println("A");
	}

	// 一个类当中可以编写多个静态代码块
	static {
		System.out.println("B");
	}

	// 入口
	public static void main(String[] args){
		System.out.println("Hello World!");
	}

	// 编写一个静态代码块
	static{
		System.out.println("C");
	}
}

//输出结果:
/*
A
B
C
Hello World!
*/

实例代码块:

/*
1、除了静态代码块之外,还有一种语句块叫做:实例语句块
2、实例语句在类加载是并没有执行。
3、实例语句语法?
	{
		java语句;
		java语句;
		java语句;
	}
4、实例语句块在什么时候执行?
	只要是构造方法执行,必然在构造方法执行之前,自动执行“实例语句块”中的代码。
	实际上这也是SUN公司为java程序员准备一个特殊的时机,叫做对象构建时机。
*/
public class InstanceCode{

	//入口
	public static void main(String[] args){
		System.out.println("main begin");
		new InstanceCode();
		new InstanceCode();

		new InstanceCode("abc");
		new InstanceCode("xyz");
	}


	//实例语句块
	{
		System.out.println("实例语句块执行!");	
	}

	// Constructor
	public InstanceCode(){
		System.out.println("无参数构造方法");
	}

	// Constructor
	public InstanceCode(String name){
		System.out.println("有参数的构造方法");
	}

}

判断代码执行顺序:

//判断以下程序的执行顺序
public class CodeOrder{
	
	// 静态代码块
	static{
		System.out.println("A");
	}

	// 入口
	// A X Y C B Z
	public static void main(String[] args){
		System.out.println("Y");
		new CodeOrder();
		System.out.println("Z");
	}

	// 构造方法
	public CodeOrder(){
		System.out.println("B");
	}

	// 实例语句块
	{
		System.out.println("C");
	}

	// 静态代码块
	static {
		System.out.println("X");
	}

}

//输出结果:A X Y C B Z

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江淮-Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值