类加载的情况

//static代码块也叫静态代码块,作用是对类进行初始化,而且它随着类的加载而执行,并且只会执行一次。
//如果是普通代码块,每创建一个对象,就执行。
//类什么时候会被加载
//1.创建对象实例时new
//2.创建子类对象实例,父类也会被加载
//3.使用类的静态成员时(静态属性,静态方法)
//类的加载顺序:超类的静态变量和代码块-父类的静态变量和代码块-子类的静态变量和代码块
//-非静态变量和代码块-超类的构造器-父类的非静态变量和代码块-父类的构造器-子类非静态变量和代码块-子类的构造器
public class CodeBlockDetail01 {
    public static void main(String[] args) {
        //类被加载的情况举例
        //1.创建对象实例时(new)
        //AA aa = new AA();
        //2.创建子类对象实例,父类也会被加载,而且父类先被加载,子类后被加载
        //AA aa2 = new AA();//输出BB的静态代码块1被执行
                          // 输出AA的静态代码块1被执行
        //3.使用类的静态成员时(静态属性,静态方法)
        //System.out.println(Cat.n1); //输出Cat的静态代码块1被执行 999
        System.out.println(DD.n1);//8888,DD的静态代码块1被执行,没创建对象所以普通代码块没有执行


    }
}
class Cat{
    public static int n1 = 999;//静态属性
    //静态代码块
    static{
        System.out.println("Cat的静态代码块1被执行");
    }

}
class AA extends BB{//子类继承父类
    //静态代码块
    static{
        System.out.println("AA的静态代码块1被执行");
    }
}
class BB{//父类
    //静态代码块
    static{
        System.out.println("BB的静态代码块1被执行");
    }
}
class DD{
    public static int n1 = 8888;//静态属性
    //静态代码块
    static{
        System.out.println("DD的静态代码块1被执行");
    }
    //普通代码块,在new对象时,被调用,而且每创建一个对象,就调用一次
    //可以这样简单的理解,普通代码块是构造器的补充
    {
        System.out.println("DD的代码块被执行");
    }
}
//小结1,static 代码块是类加载时,执行只会执行一次
//   2,普通代码块在创建对象调用时,创建一次,调用一次
//   3,类加载三种情况

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值