类加载过程:
实例是实例,类是类,不可混为一谈。类的加载过程和实例信息没有任何关系,仅与类有关系
类的加载过程指的是:将类的信息加载到内存,第一次使用这个类(创建类的实例,或者调用静态方法or静态变量)的时候才会加载,并且看父类是否已加载。java中的类是动态加载的,而且只加载一次。
一个类的所有信息如下:
类加载过程:
- 在方法区分配保存类信息的内存空间
- 给变量赋值
- 加载父类
- 设置父子关系
- 执行类初始化代码
类初始化代码包含:类变量赋值语句+static{}静态代码块2部分组成。是先执行父类的,再执行子类,不过,在执行父类类初始化代码的时候,子类类变量是有默认值(步骤2已执行)
栈:存放方法的局部变量
堆:用来存放对象
方法区:存放类信息