类什么时候被加载

类什么时候被加载

  1. 创建对象实例时(new)

  2. 创建子类对象实例,父类也会被加载

  3. 使用类的静态成员时(静态属性、静态方法)

    实例如下:

package com.example.Codeblock;

/**
 * @author gaoqinghui
 * @date 2022/4/26 21:50
 *
 */
public class CodeBlockDetail01 {
    public static void main(String[] args) {
        //类什么时候被加载:
        //1.创建对象实例时
        AA aa = new AA();
        System.out.println("======================");
        //2.创建子类对象实例,父类也会被加载
        BB bb = new BB();
        System.out.println("======================");
        //3.使用类的静态成员时(静态属性,静态方法)
        //不管如果调用,都会先调用父类的代码块
        System.out.println(Cat.name);
        System.out.println("======================");


        //普通的代码块只要创建对象实例就会被调用,创建几个对象实例就会被调用几次
        //如果只是使用类的静态成员时,普通代码块不会被执行

        //下面两个类加载的条件都执行,但是静态代码块只执行了一次,这就是static的作用
        //可以这样理解:普通代码块是对我们构造器的一种补充,构造器被调用了普通代码块就被调用
        //构造器只有在创建对象实例时才会被调用
        D d = new D();
        D d1 = new D();
        System.out.println(D.n1);

    }
}

class D {
    public static int n1 = 1;

    static {
        System.out.println("D类代码块被执行");
    }
}
class annimal {
    static {
        System.out.println("annimal类代码块被执行~~");
    }
}

class Cat extends annimal{
    public static String name = "郜庆辉";
    static {
        System.out.println("Cat类代码块被执行~~");
    }
}
class BB extends AA{
    static {
        System.out.println("BB类代码块被执行~~");
    }
}
class AA {
    static {
        System.out.println("AA类代码块被执行~~");
    }
}


//总结:
//1.static 代码块是类加载时执行,只会执行一次
//2.普通代码块是在创建对象时调用的,创建一次调用一次
//3.类加载的3种情况需要记住
posted @ 2022-05-10 17:04  忧愁小松鼠  阅读(111)  评论(0)    收藏  举报