Java对象初始化顺序
来源:互联网 发布:art template.js文档 编辑:程序博客网 时间:2024/06/06 08:37
class Member {public Member(String str) {System.out.println(str);}}class Parent {private Member pMember = new Member("父类成员变量默认初始化");public Parent() {System.out.println("父类构造函数");}//非静态代码块{System.out.println("父类非静态代码块");}//静态代码块static {System.out.println("父类静态代码块");}}class Child extends Parent {private int i;private Member cMember = new Member("子类成员变量默认初始化");public Child() {System.out.println("子类构造函数");i = 5;System.out.println("子类构造函数为成员变量初始化 i = " + i);}//非静态代码块{System.out.println("子类非静态代码块");}//静态变量static Member cStaticMember1 = new Member("子类静态变量1");//静态代码块static {System.out.println("子类静态代码块");}//静态变量static Member cStaticMember2 = new Member("子类静态变量2");}public class TestDemo4 {public static void main(String[] args) {Child c1 = new Child();System.out.println('\n' + "------分------割-------线------" + '\n');Child c2 = new Child();}}
输出结果:
父类静态代码块
子类静态变量1
子类静态代码块
子类静态变量2
父类成员变量默认初始化
父类非静态代码块
父类构造函数
子类成员变量默认初始化
子类非静态代码块
子类构造函数
子类构造函数为成员变量初始化 i = 5
------分------割-------线------
父类成员变量默认初始化
父类非静态代码块
父类构造函数
子类成员变量默认初始化
子类非静态代码块
子类构造函数
子类构造函数为成员变量初始化 i = 5
静态初始化只执行一次
执行顺序
1.执行静态代码块(先父后子),静态变量和静态代码块没有优先,顺序执行
2.父类成员变量默认初始化
3.父类非静态代码块
4.父类构造函数
5.子类执行234步
装载顺序是:
- Java解释器查找类路径,以定位XXX.class文件
- 载入XXX.class,执行静态初始化的所有动作(
先父后子),并且静态初始化只在Class对象首次加载的时候进行一次 - 当用new创建对象的时候,首先在堆上为对象分配足够的存储空间
- 这块存储空间会被清零,对象中的所有基本类型数据都设置成默认值
- 执行所有出现于字段定义处的初始化动作,例如非静态代码块
- 执行构造器
0 0
- JAVA对象初始化顺序
- java对象初始化顺序
- Java 对象初始化顺序
- Java对象初始化顺序
- Java对象初始化顺序
- Java 对象初始化顺序
- Java 对象初始化顺序
- Java对象初始化顺序
- java对象初始化顺序
- java对象初始化顺序
- Java对象初始化顺序
- Java对象初始化顺序
- java对象初始化顺序
- java对象初始化顺序
- Java 对象初始化顺序
- Java对象初始化顺序
- Java对象初始化顺序
- Java对象初始化顺序
- java获取properties文件值得方法
- MyISAM InnoDB的 区别
- Bull Math(高精度——乘法)
- Java线程(六):线程池
- 自定义ViewGroup详讲
- Java对象初始化顺序
- android Vibrator 使用
- EJB事务简介
- Java线程(七):Callable和Future
- 应用开发及托管服务
- Android连续点击两次Back键退出程序 分类: Android
- MFC选择文件夹对话框
- GAIA地形引擎源代码阅读 <一>
- Java线程(八):锁对象Lock-同步问题更完美的处理方式