More on Class Loading and Initialization
上一篇博客中对于类的加载和初始化进行了详细的说明,但上一篇博客代码中的main()所在的类为导出类,
对其中一些问题的理解可能会引起误导和不明确,所以补充这篇博客进一步说明。以下面的代码为例进行说明:
//File: P130_Practice5.py
//Author: lxw
//Time: 2014-05-31
//Usage: P130 Practice 5. class A{
static B b = new B();
public A(){
System.out.println("A constructor.");
}
} class B{
public B(){
System.out.println("B constructor.");
}
} class C{
public C(){
System.out.println("C constructor.");
}
public void show(){}
} class E{
static int i = print("WARNING.");
public E(){
System.out.println("E constructor.");
}
static int print(String s){
System.out.println(s);
return ;
}
} class D extends A{
B b = new B();
static C c = new C();
} public class P130_Practice5 {
public static void main (String [] args){
D d = new D(); // 顺序是: 先是加载完需要的类(只加载需要的类),然后才执行初始化。
//D.c.show(); // 只加载
E e = new E(); // 顺序是: 先是加载完需要的类(只加载需要的类),然后才执行初始化。
}
}
Output:
lxw@:::~/eclipse/java/javaComLine$ java P130_Practice5
B constructor.
C constructor.
A constructor.
B constructor.
WARNING.
E constructor.
需要注意的是:
B constructor. -- 加载类A
C constructor. -- 加载类D
A constructor. -- A()
B constructor. -- 初始化类D
WARNING. -- 加载类E
E constructor. -- E()
所以我们可以看出对于每一条语句的执行,类的加载和初始化的顺序是:先加载完所有需要的类(只加载“需要”的类,
不需要的不加载),然后才执行初始化。
More on Class Loading and Initialization的更多相关文章
- Application Initialization Module for IIS 7.5
http://www.iis.net/downloads/microsoft/application-initialization IIS7.5也有Warm Up功能 让ASP.NET第一次Reque ...
- 你真的了解load方法么?(转载)
本文授权转载,作者:左书祺(关注仓库,及时获得更新:iOS-Source-Code-Analyze) 因为 ObjC 的 runtime 只能在 Mac OS 下才能编译,所以文章中的代码都是在 Ma ...
- Java Hour 26 Execution
有句名言,叫做10000小时成为某一个领域的专家.姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧. 26 Hours. Java 虚拟机启动的时候加载一个指定的类然后调用该类中的 ...
- iOS 面试基础题目
转载: iOS 面试基础题目 题目来自博客:面试百度的记录,有些问题我能回答一下,不能回答的或有更好的回答我放个相关链接供参考. 1面 Objective C runtime library:Obje ...
- Objective-C运行时编程 - 方法混写 Method Swizzling
摘要: 本文描述方法混写对实例.类.父类.不存在的方法等情况处理,属于Objective-C(oc)运行时(runtime)编程范围. 编程环境:Xcode 6.1.1, Yosemite,iOS 8 ...
- The JSR-133 Cookbook for Compiler Writers(an unofficial guide to implementing the new JMM)
The JSR-133 Cookbook for Compiler Writers by Doug Lea, with help from members of the JMM mailing lis ...
- iOS面试2
转:http://www.cocoachina.com/ios/20151106/14069.html 作者:seedante 授权本站转载. 题目来自博客:面试百度的记录,有些问题我能回答一下,不能 ...
- 4: 模块化应用程序开发 Modular Application Development Using Prism Library 5.0 for WPF (英汉对照版)
A modular application is an application that is divided into a set of loosely coupled functional uni ...
- 从JIT到类加载再到实现原理解式Lambda编译慢的问题
问题回顾 描述的话不多说,直接上图: 看到输出结果了吗?为什么第一次和第二次的时间相差如此之多?咱们一起琢磨琢磨,也可以先去看看结论再回过头看分析 注:并非仅第二次快,而是除了第一次,之后的每一次都很 ...
随机推荐
- ubuntu 下查看某个包是否 安装
dpkg -l dpkg -l|grep package-name dpkg --status package-name 查看/var/lib/dpkg/status 内容
- c++ virtual 和 pure virtual的区别
参考资料: http://stackoverflow.com/questions/1306778/c-virtual-pure-virtual-explained 验证代码: #include < ...
- java gc日志详解
从 Full GC 信息可知,新生代可用的内存大小约为 18M,则新生代实际分配得到的内存空间约为 20M(为什么是 20M? 请继续看下面...).老年代分得的内存大小约为 42M,堆的可用内存的大 ...
- MII接口概念简述
MII: Medium Independent Interface 媒体独立接口,也称介质无关接口 RMII: Reduced MII 简化媒体独立接口 GMII: Gigabit Medium In ...
- java.lang.IllegalStateException: class utils.filter.ContentFilter is not a javax.servlet.Filter
1.错误描写叙述 2016-01-12 11:27:01.787:WARN:oejuc.AbstractLifeCycle:FAILED ContentFilter: java.lang.Illega ...
- 使用Hyper-V安装Ubuntu16.04 Server 网络配置
由于最近在研究Docker, 于是需要用到虚拟机,安装Ubuntu 16.04到Hyper-V并部署Docker.这个过程中填平了几个小坑,为了大家以后遇到类似情况节省时间,我将这几个小坑的问题和解决 ...
- 个人博客开发之 xadmin 安装
项目源码下载:http://download.vhosts.cn xadmin 下载地址:https://github.com/sshwsfc/xadmin或 https://github.com/s ...
- 基于HTML5 audio元素播放声音jQuery小插件
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1609 一.前面的些唠 ...
- android模拟器怎么直接安装apk
方法一:进入adb的tools目录,下面有adb.exe如图, 在cmd下进入tools目录,然后输入adb install apk路径,就行了 方法二:直接写一个批处理文件 运行就行了.
- yii rule
https://blog.csdn.net/ljfrocky/article/details/46373691 http://www.yiichina.com/tutorial/997 http:// ...