Java类加载器学习记录
1.如果本类调用其他类的final静态变量,编译时能计算出结果,则不会去加载其他类静态代码块,如果编译时不能计算出结果,就会加载其他类静态代码块,即调用其他类中的final常量,不会加载其他类中静态代码块。
2.调用main方法,首先会去加载静态代码块。如果有父类,就先加载父类静态代码块。同一个类加载器中,已经加载过的静态代码块,不会重复去加载。
3.(BootStrap)根类加载器加载核心的类库,如加载java.lang.*这个包下的所有类,加载一个类的时候,首先查看当前环境是否已经加载过该类,如果没有,则交给父类加载器,逐层往上。最终如果所有父类加载器都加载不了,自己也加载不了,则抛出ClassNotFoundException异常。
探索不以困难而止,学习不以艰苦而终