类加载器、反射
第1章 类加载器 当你的文件编译的时候会产生class文件,当运行文件的时候class文件会被加载到方法与数据共享区,这个时候,当一进入方法与数据共享区的时候会由 类的加载器 负责在堆里面创建一个对象(字节码文件对象) New的是和这个不一样的,new可以new很多个,但是字节码文件对象我们控制不了,是又累的加载器创建的( 只创建一个 ) 静态同步方法中的锁对象是 类名.class ,因为他优先于静态 1.1 类的加载 l 加载 就是指将class文件读入内存,并为之创建一个Class对象。( 文件字节码 ) 任何类被使用时系统都会建立一个Class对象 l 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值(静态初始化) 解析 将类的二进制数据中的符号引用替换为直接引用( int a=1/a是符号引用,1是直接引用 ) l 初始化 就是我们以前讲过的初始化步骤 1.2 类初始化时机 1. 创建类的实例( new一个类的对象的时候 ) 2. 类的静态变量,或者为静态变量赋值( 访问某个类的静态变量或者给他赋值的时候 ) 这个时候Demo01进内存,Math也进内存,并且创建字节码文件对象( 访问静态 ) 3. 类的静态方法( 只要用到类的静态变量就进内存 ) 4. 使用反射方式来强制创建某个类或接口对应的java.lang