Java代码执行顺序总结

这个问题可能每个小伙伴学习Java的时候都遇到过,但恐怕很多时候都没重视。举个栗子来讲解,栗子有一部分copy了别人的代码。。

父类:

package test;

public class Father {
	public Father() {
		System.out.println("Father Constructor is running");
	}
	public Father(int a) {
		System.out.println("Father Constructor is running with a=" + a);
	}
}

测试类:

package test;

public class Shunxu extends Father {
	//静态变量
    static int a = 0;

//非静态代码块
    {
         System.out.println("B.scope is running");
         a = 10 ;
    }

//静态代码块
    static {
         System.out.println("B.static scope is running");
         a = 20;
    }

//构造函数
    public Shunxu() {
//    	super(10);
         System.out.println("B.Constructor is running");
    }

    public static void main(String arg[]) {
             System.out.println(Shunxu.a);//证明非静态代码块在类加载时未执行
             Shunxu b1 = new Shunxu();
             System.out.println(b1.a);
             Shunxu b2 = new Shunxu();//非静态代码块每次都执行

             System.out.println(Shunxu.a);
             /*
              * 静态代码块->父类构造方法->非静态代码块->本身构造方法
              */

   }
}
执行结果:

B.static scope is running
20
Father Constructor is running
B.scope is running
B.Constructor is running
10
Father Constructor is running
B.scope is running
B.Constructor is running
10

做个总结:(其实都在注释里了)

1.顺序:静态代码块->父类构造方法->非静态代码块->本身构造方法。

2.非静态代码块每次构造对象实例时都执行,静态代码块只在加载类的时候执行一次。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值