类什么时候被加载
类什么时候被加载
-
创建对象实例时(new)
-
创建子类对象实例,父类也会被加载
-
使用类的静态成员时(静态属性、静态方法)
实例如下:
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种情况需要记住

浙公网安备 33010602011771号