昨天做java面试题时遇到一道题,说类方法中可以直接调用对象变量,判断对错。答案是错的,应为类方法(静态方法)中不能调用对象的变量,因为静态方法在类加载时就初始化,对象变量需要在新建对象后才能使用。
于是把类加载机制学习一下(不会的就要多看)。
类从被加载到虚拟机中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initalization)、使用(Using)和卸载(Unloading)7个阶段。其中准备、验证、解析3个部分统称为连接。
加载、验证、准备、初始化和卸载这5个阶段的顺序是不变的,类的加载过程必须按照这种顺序按部就班的开始。而解析阶段则不一定:它在某些情况下可以在初始化阶段之后在开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。