packagecom.zy.reflection;/**
*description: Java--注解与反射--类的内存初始化
*@program: 基础语法
*@author: zy
*@create: 2023-03-30 22:12
*/publicclassStudy03{/*
1.加载到内存,会产生一个类对应的class对象
2.链接,链接结束后 m=0
3.初始化
<clinit>(){
System.out.println("A类静态代码块初始化");
m = 300;
m = 100;
}
m = 100;
输出:
A类静态代码块初始化
A类的无参构造初始化
100
*/publicstaticvoidmain(String[] args){A a =newA();System.out.println(A.m);}}classA{static{System.out.println("A类静态代码块初始化");
m =300;}staticint m =100;publicA(){System.out.println("A类的无参构造初始化");}}
类何时初始化
packagecom.zy.reflection;/**
*description: Java--注解与反射--类何时会初始化
*@program: 基础语法
*@author: zy
*@create: 2023-03-30 22:25
*/publicclassStudy04{static{System.out.println("Study04类被加载");}publicstaticvoidmain(String[] args)throwsClassNotFoundException{// 1.new 产生主动引用//Son son = new Son();// 2.反射 产生主动引用//Class.forName("com.zy.reflection.Son");/*
不会产生类的引用的方法:
1.子类调用父类的静态域或静态属性
2.通过数组定义类引用
3.引用常量
*///System.out.println(Son.b);//Son[] sons = new Son[10];System.out.println(Son.M);}}classFather{staticint b =200;static{System.out.println("Father类被加载");}}classSonextendsFather{static{System.out.println("Son类被加载");
m =300;}staticint m =100;staticfinalintM=1;}