类加载器
加载类的时候需要有类加载器
引导类加载器不可以获取 他是祖宗
扩展类加载器是ext目录下的jar包的加载器 他是父类
自己写的类 加载器都是系统类加载器 他是儿子
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();//系统加载器
ClassLoader parent = systemClassLoader.getParent();//扩展类加载器
ClassLoader parent1 = parent.getParent();// 引导类加载器 它的值是null
输出结果
类的加载
主动引用
-
声明子类时 父类也会被加载 new的时候
-
通过反射 获取class对象的时候 也会加载
被动引用
-
通过子类调用父类的静态方法 父类不会加载 (没有new 直接调用)
-
new 数组类型的时候不会加载
-
调用常量 final类型的 不会被加载
类加载是通过类加载器把类加载到内存 然后连接 然后初始化的过程
每一个类在加载的时候都会生成一个Class对象 把类加载到内存 会把静态东西和代码 还有常量池加载到内存
再new的时候 都是去找这个class对象
这是连接
并且如果你有一个包和java自带的包名相同 不会识别 是双亲委派机制