class的装载
来源:互联网 发布:php 16进制转字符串 编辑:程序博客网 时间:2024/06/04 18:56
由于Java 中的一切东西都是对象,所以许多活动变得更加简单,每个对象的代码都存在于独立的文件
中。除非真的需要代码,否则那个文件是不会载入的。通常,我们可认为除非那个类的一个对象构造完毕,
否则代码不会真的载入。由于static 方法存在一些细微的歧义,所以也能认为“类代码在首次使用的时候载入”。
首次使用的地方也是static 初始化发生的地方。装载的时候,所有static 对象和static 代码块都会按照本
来的顺序初始化(亦即它们在类定义代码里写入的顺序)。当然,static 数据只会初始化一次。
简要的说就是,在类有继承关系时,类加载器上溯造型,进行相关类的加载工作。
<code class="hljs vbnet has-numbering"><span class="hljs-keyword">Class</span> B extends <span class="hljs-keyword">Class</span> A当我们<span class="hljs-keyword">new</span> B()时,类加载器自动加载A的代码</code>
<code class="hljs cs has-numbering">(<span class="hljs-keyword">static</span>对象和<span class="hljs-keyword">static</span>代码块,依据他们的顺序进行初始化)>成员变量>构造函数</code>
public class A { static{ System.out.println("A的static代码块..."); } { System.out.println("A代码块..."); } public String s1 = prtString("A的成员变量..."); public static String s2 = prtString("A的static变量..."); public A(){ System.out.println("A的构造函数..."); } public static String prtString(String str) { System.out.println(str); return null; }}public class B extends A { public String ss1 = prtString("B的成员变量..."); public static String ss2 = prtString("B的static变量..."); public B(){ System.out.println("B的构造函数..."); } private static A a = new A(); static{ System.out.println("B的static代码块..."); } { System.out.println("B代码块..."); } }
A的static代码块...
A的static变量...
B的static变量...
A的成员变量...
A的构造函数...
B的static代码块...
A代码块...
A的成员变量...
A的构造函数...
B的成员变量...
B代码块...
B的构造函数...
下面进行分析:
代码块和成员变量的初始化顺序(不论是静态的还是非静态的)依他们在代码中的顺序而定,在类加载时,先加载静态的一系列(假定静态变量都写在静态代码块前面,因为静态代码块的作用是为静态变量赋值),当类初次加载时: 父静态变量,父静态代码块,子静态变量,子静态代码块,父成员变量,父代码块,父构造,子成员变量,子代码块,子构造。
当类不是初次加载时,就不再执行类的静态变量和静态代码块。 0 0
- class的装载
- JVM-ClassLoader装载class的流程
- JVM装载class过程
- Class 装载系统
- Class装载系统
- Class.forName()装载数据驱动
- 深入JVM-Class装载系统
- JAVA——Class装载
- Java的类装载器(Class Loader)和命名空间(NameSpace)
- Class Loading ---(类装载机制,开发者不得不知道的故事)
- Java的类装载器(Class Loader)和命名空间(NameSpace)
- Class Loading ---(类装载机制,开发者不得不知道的故事)
- Class Loading ---(类装载机制,开发者不得不知道的故事)
- [转]Java的类装载器(Class Loader)和命名空间(NameSpace)
- Java的类装载器(Class Loader)和命名空间(NameSpace)
- Java的类装载器(Class Loader)和命名空间(NameSpace)
- Java的类装载器(Class Loader)和命名空间(NameSpace)
- Java的类装载器(Class Loader)和命名空间(NameSpace)
- 采访MichaelBolton ----阅读他对于即将成为测试人员有关如何成功的建议
- Arcgis 10.3安装问题以及添加python的包
- IOS之UI--动态设置NavigationBar的颜色以及透明度
- 总结七条助你成为Linux高手的超棒忠告
- 企业轻松组建虚拟局域网——蒲公英Cloud VPN技术
- class的装载
- tomcat 数据库连接池
- 外观模式(Facade)
- 少数人的智慧(The Wisdom of the Few)
- HDOJ 3829 Cat VS Dog
- 【JavaScript】性能更好的js动画实现方式——requestAnimationFrame
- 洛谷 P1080 国王游戏
- 2016最新号段验证(java)
- windows常用工具大汇集