Java中类的初始化顺序
2016-05-17 14:34
246 查看
讨论一下jvm加载class并初始化的先后顺序。
clinit : 类的初始化方法,即第一次使用到类时,jvm加载到内存中调用的方法。主要用于static变量初始化以及static代码块执行。
init : new 对象时调用的方法,每创建一个对象将会调用一次<init>方法。
2、子类的静态成员变量,子类的静态代码块。
3、父类的成员变量,代码块,构造方法。
4、子类的成员变量,代码块,构造方法。
总而言之: 静态属性 --> 静态代码块 --> 成员变量 --> 代码块 --> 构造方法
1、准备代码,然后main方法中new Init(); new Init();
2、观察断点停留的过程
3、基本常识
编译器将java源码编译成class之后会自动添加两个方法 <clinit> <init>clinit : 类的初始化方法,即第一次使用到类时,jvm加载到内存中调用的方法。主要用于static变量初始化以及static代码块执行。
init : new 对象时调用的方法,每创建一个对象将会调用一次<init>方法。
4、如果类有继承关系
1、父类的静态成员变量,父类的静态代码块。2、子类的静态成员变量,子类的静态代码块。
3、父类的成员变量,代码块,构造方法。
4、子类的成员变量,代码块,构造方法。
总而言之: 静态属性 --> 静态代码块 --> 成员变量 --> 代码块 --> 构造方法
相关文章推荐
- Spring 读取i18n国际化资源文件的工具类
- JAVA 笔记(二)
- Pascal's Triangle
- Spring MVC 项目搭建 -3- 快速 添加 spring security
- 利用SpringAOP+注解记录日志
- javafx 同时画line chart和bar chart
- Java获取xml格式字段内容
- Java IO概述
- RxJava入门指引,易懂
- java基础第八天_多线程
- Netty 实现聊天功能
- Spring技术内幕之Restful(01)-Restful风格
- 【第十二章】零配置 之 12.1 概述 ——跟我学spring3
- jdk的配置-mac,windows
- 史上最全最强SpringMVC详细示例实战教程
- Java类和对象6
- Spring boot 中 使用 Jackson 将null 字段转换为空字符串写法
- Struts2回顾
- Java动态代理的基本点
- 使用JSP和javabean实现计算器功能