您的位置:首页 > 编程语言 > Java开发

java类对象的初始化顺序

2017-10-30 23:31 169 查看
类对象的初始化顺序

1.static成员变量默认初始化

2.static块初始化

3.实例成员变量默认初始化

4.实例块初始化

5.构造函数



1.static块初始化

2.static成员变量默认初始化

3.实例块初始化

4.实例成员变量默认初始化

5.构造函数

代码测试:

class Date{
private int year;
private int month;
private int day;
//Date静态初始化块
static{
System.out.println("Date static init block!");
}
//Date实例初始化块
{
System.out.println("Date instance init block!");
this.year=year;
this.month=month;
this.day=day;
}
//Data自定义构造函数
public Date(int y,int m,int d){
System.out.println("Date(int, int ,int)");
this.year=y;
this.month=m;
this.day=d;
}
}

class Staff{
private String name;
private int age;
private String sex;
private static int count;//定义成static成员 ,此时它的内存从堆变到方法区
//private  Date date;
//测试用例1:
private  Date date=new Date(2017,1,7);
//测试用例2:
//private static Date date=new Date(2017,1,7);

//Staff静态初始化块
static{
System.out.println("Staff static init block!");
count=0;
}
//Staff实例初始化块
{
System.out.println("Staff instance init block!");
this.name = "default";
this.age = 0;
this.sex = "default";
count++;
}
//Staff默认构造函数
public Staff(){
System.out.println("Staff(String, int, String, int, int, int)");
}
//Staff自定义构造函数
public Staff(String name, int age, String sex,int y,int m,int d) {
System.out.println("Staff(String, int, String, int, int, int)");
//date =new Date(y,m,d);
this.name = name;
this.age = age;
this.sex = sex;
}
public String toString() {
return "Staff [name=" + name + ", age=" + age + ", sex=" + sex + ", date=" + date + "]";
}
}

public class TestObjectDemo {

public static void main(String[] args) {
Staff p1=new Staff("李敏镐",32,"男",1987,5,18);
}
}


测试用例1结果:


测试用例2结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: