java中静态代码块 构造代码块 构造方法的执行顺序及注意问题

闲暇之余,总结并撸码测试了一下静态代码块、构造代码块、构造方法的执行顺序及需要注意的问题

当然,首先大家得知道静态代码块是跟着类的加载而加载的,而构造代码块和构造方法是随着对象的加载而加载的,相比这个问题大家都已经很熟悉了。

以下是测试用的一个小Demo,便于更清楚的说明事实:

 

package com.test;

public class Test {
	
	private int number=0;
	
	//静态代码块
	static{
		System.out.println("静态代码块执行!");
	}
	
	//构造代码块
	{
		System.out.println("构造代码块执行!");
		number=1;
	}
	
	//构造方法
	public Test(){
		System.out.println("构造方法执行!");
		System.out.println(number);
	}
	
	
	public static void main(String[] args) {
		new Test();
	}
}

最终输出为:

 

 

静态代码块执行!
构造代码块执行!
构造方法执行!
1

以上Demo可以很清楚看出这三个代码块的执行顺序,可以这样理解,静态代码块在类加载的时候就执行了,不论你是否new了对象,而构造代码块和构造方法是必须在创建该类的对象时才会执行,且执行顺序是   构造代码块->构造方法  ,这样子,你就可以在构造代码块中做一些需要再构造方法之前做的事儿了。

 

若类存在继承问题,而恰好两个类中都有这三种代码块,那么执行顺序将会是先执行父类的静态代码块,再执行子类的静态代码块,然后执行父类的构造代码块,执行父类的构造方法,再执行子类的构造代码块,执行子类的构造方法。

 

不知道我表述的够明白不,把大家绕晕了没有。这里总结一下吧!

总结:静态的是与类有关,会先加载,而构造代码块是会在对象初始化时执行,然后再执行构造方法,除非构造方法中含有this()或者super(),若有,则构造代码块将会在this()或者super()之后执行,然后再执行构造方法的方法体;

 

以上都是个人总结,若有错误之处,欢迎各位大神提出指正!

推荐大家一个Java的学习网站:Java知识学习网,Java资料下载,Java学习路线图,网址:https://www.java1010.com

 

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值