摘要: 让我们先来看两个类:Base和Derived类。注意其中的whenAmISet成员变量,和方法preProcess()。 情景1:(子类无构造方法) 当.java源代码转换成一个.class文件后,其转换成类似下面的等价代码: 输出结果是: set when declared 情景2:(子类添加了构 阅读全文
posted @ 2017-01-02 21:41 又是火星人 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 一、阿里巴巴笔试题: 当.java源代码转换成一个.class文件后,其转换成类似下面的等价代码: 二、运行结果 三、加载过程分析 一、执行main()时,由于使用new语句创建实例,属于首次主动使用类T,JVM加载类T, 声明静态变量k、t1、t2、i、n(为静态变量分配内存),并设置变量初始化的 阅读全文
posted @ 2017-01-02 15:56 又是火星人 阅读(763) 评论(1) 推荐(0) 编辑
摘要: 一、类的初始化 对于类的初始化:类的初始化一般只初始化一次,类的初始化主要是初始化静态成员变量。 类的编译决定了类的初始化过程。 编译器生成的class文件主要对定义在源文件中的类进行了如下的更改: 一个java类和编译后的class对应的转换如下: 源文件: 当java源代码转换成一个class文 阅读全文
posted @ 2017-01-02 12:52 又是火星人 阅读(1302) 评论(0) 推荐(0) 编辑
摘要: 类加载过程 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示: 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析 阅读全文
posted @ 2017-01-02 11:49 又是火星人 阅读(227) 评论(0) 推荐(0) 编辑