类的初始化顺序
来源:互联网 发布:淘宝网进入 编辑:程序博客网 时间:2024/05/19 20:42
类的初始化顺序为:
1:static成员变量默认初始化
2:静态块初始化
3:实例成员变量默认初始化
4:实例块初始化
5:构造函数
分析在组合关下,不同情况的初始化顺序:
<1> 在Person的构造函数中对Data进行初始化
class Data{ private int year; private int month; private int day; static{ System.out.println("Data 静态初始化块"); } { System.out.println("Data 实例初始化块"); } public Data(int y,int m,int d){ this.year = y; this.month = m; this.day = d; System.out.println("Data 构造函数"); }}class Person{ private String name; private int age; private static int count; private Data data; static{ System.out.println("Person 静态初始化块"); } { System.out.println("Person 实例初始化块"); } public Person(){ System.out.println("Person 构造函数"); data = new Data(2017,1,1); }}public class Main {public static void main(String[] args) {// TODO Auto-generated method stubPerson p1=new Person();}}代码运行的结果:
Person 静态初始化块
Person 实例初始化块
Person 构造函数
Data 静态初始化块
Data 实例初始化块
Data 构造函数
<2>:Data为Person的实例成员变量初始化顺序
class Data{ private int year; private int month; private int day; static{ System.out.println("Data 静态初始化块"); } { System.out.println("Data 实例初始化块"); } public Data(int y,int m,int d){ this.year = y; this.month = m; this.day = d; System.out.println("Data 构造函数"); }}class Person{ private String name; private int age; private static int count; private Data data=new Data(2017,11,16); static{ System.out.println("Person 静态初始化块"); } { System.out.println("Person 实例初始化块"); } public Person(){ System.out.println("Person 构造函数"); //data = new Data(2017,1,1); }}public class Main {public static void main(String[] args) {// TODO Auto-generated method stubPerson p1=new Person();}}
程序运行的结果:
Person 静态初始化块
Data 静态初始化块
Data 实例初始化块
Data 构造函数
Person 实例初始化块
Person 构造函数
<3>Data为Person的静态成员变量初始化顺序:
class Data{ private int year; private int month; private int day; static{ System.out.println("Data 静态初始化块"); } { System.out.println("Data 实例初始化块"); } public Data(int y,int m,int d){ this.year = y; this.month = m; this.day = d; System.out.println("Data 构造函数"); }}class Person{ private String name; private int age; private static int count; private static Data data=new Data(2017,11,16); static{ System.out.println("Person 静态初始化块"); } { System.out.println("Person 实例初始化块"); } public Person(){ System.out.println("Person 构造函数"); //data = new Data(2017,1,1); }}public class Main {public static void main(String[] args) {// TODO Auto-generated method stubPerson p1=new Person();}}
运行结果:
Data 静态初始化块
Data 实例初始化块
Data 构造函数
Person 静态初始化块
Person 实例初始化块
Person 构造函数
阅读全文
0 0
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类初始化的顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类的初始化顺序
- 类初始化的顺序
- 类的初始化顺序
- 类的初始化顺序
- PAT 1037. 在霍格沃茨找零钱(20)
- Python程序设计——查找列表中连续递增序列的起始位置
- 软件安装——linux使用教程(三)
- sts安装svn插件
- SpringMVC +Oracle分页
- 类的初始化顺序
- python 测试代码使用时间
- 数据分析(四)从K近邻算法入门
- IntelliJIDEA和tomcat在浏览器js乱码问题解决
- Java建造者模式
- HTML中各类空格占位符
- HDU-(Lowest Common Multiple Plus)(包括gcd和lcm算法)
- Anaconda 常用命令
- c语言之最大公约数和最小公倍数