Java源代码各个代码块的加载顺序
2015-11-09 10:42
369 查看
类第一次加载时回加载静态成员、静态代码块、成员变量、构造代码块、构造方法,下面通过输出显示在类加载时以上成员的加载顺序。
运行结果:
静态变量: Demo对象
我是静态代码块
成员属性: Demo对象
我是成员代码块
----------------------------------------
成员属性: Demo对象
我是成员代码块
分析:
加载时顺序为:
静态变量
静态代码块
成员属性
成员代码块
构造代码块
如果需要静态方法时直接使用类名调用就可以。在加载时直接加载不执行 成员方法是用对象调用,加载时不执行。
<span style="font-size:14px;">public class Test1 { public static void main(String[] args) { // 第一次加载class文件要执行的程序块 BlockSequence bs = new BlockSequence(); System.out.println("----------------------------------------"); // 第二次加载就不要加载静态代码块了 new BlockSequence(); } } /* * 作为能够显示属性已创建的临时类。 */ class Demo { public Demo(String str) { System.out.println(str + ": Demo对象"); } } /** * 各个程序块的名称就是索要输出的字符串。不在进行一一标记。 */ class BlockSequence { private Demo d1 = new Demo("成员属性"); public static Demo d2 = new Demo("静态变量"); public BlockSequence() { } { System.out.println("我是成员代码块"); } static { System.out.println("我是静态代码块"); } }</span>
运行结果:
静态变量: Demo对象
我是静态代码块
成员属性: Demo对象
我是成员代码块
----------------------------------------
成员属性: Demo对象
我是成员代码块
分析:
加载时顺序为:
静态变量
静态代码块
成员属性
成员代码块
构造代码块
如果需要静态方法时直接使用类名调用就可以。在加载时直接加载不执行 成员方法是用对象调用,加载时不执行。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统