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