Java代码块的执行顺序

  • 被static修饰的成员变量都是类变量,会随着JVM加载类的时候加载而执行,且只执行一次,即使后面再有该类的实例化也不会再执行
  • 没有被static修饰的成员变量也被称为实例变量,需要创建对象才会随之加载到堆内存
  • 构造方法体的this关键字跟super关键字不能同时出现,而且只能在代码的第一行
  • 构造方法体的第一行既不是this语句也不是super语句,则隐式调用super()​​​​​​​
public class Animal{
    static {
        System.out.println("父类静态代码块");
    }
    {
        System.out.println("父类构造代码块");
    }


    public Animal() {
        System.out.println("父类构无参构造方法");
    }
    public Animal(String str){
        System.out.println("父类含一个参数构造方法");
    }
}
public class Panda extends Animal {
    static {
        System.out.println("子类静态代码块");
    }
    {
        System.out.println("子类构造代码块");
    }

    public Panda() {
        this("调用带一个参数构造方法");
        System.out.println("子类无参数构造方法");
    }

    public Panda(String n) {
        this(n, "调用带两个参数构造方法");
        System.out.println("子类一个参数构造方法");
    }

    public Panda(String s1, String s2) {
         //父类初始化选择的构造方法却和子类中super 选择的构造相关
        super(s1);
        System.out.println("子类两个参数构造方法");
    }

    public static void main(String[] args) {
        System.out.println("主方法执行");
        new Panda();
        new Panda();
    }
}
结果:
父类静态代码块
子类静态代码块
主方法执行
父类构造代码块
父类含一个参数构造方法
子类构造代码块
子类两个参数构造方法
子类一个参数构造方法
子类无参数构造方法
父类构造代码块
父类含一个参数构造方法
子类构造代码块
子类两个参数构造方法
子类一个参数构造方法
子类无参数构造方法

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值