Java对象初始化顺序

一:函数public static void main(String[] args)作为程序的入口,在执行时对于该类, 会先加载该类的静态对象/静态域/静态变量,然后进入该函数执行(毕竟没有用new创建该类的对象,因此不会加载非静态对象/非静态变量以及构造函数)

二:初始化一个类时,即用new创建一个类时,初始化顺序
1,按顺寻初始化一个类中的静态对象/静态域/静态变量(当首次生成这个类的一个对象时,或者首次访问属于那个类的静态数据成员时,静态初始化都初始化一次)
2,按顺序初始化一个类中的非静态对象/非静态变量
3,初始化构造函数

在初始化一个对象时,要对定义对象的类进行初始化操作(按上面三个步骤)
初始化一个对象前,应先初始化其父类



参考下面程序:

public   class test  {
	int a = 0;
	test1 t = new test2();
	static test1 t1 = new test2();
	test(){
		System.out.println("test");
		a = 8;
	}

	 void f() {
		 System.out.println("test  f()");
		 System.out.println(a);
	 };
	 
	public static void main(String[] args){
		new test();
		System.out.println("end");
	}
}

class test2 extends test1 {
	int a = 0;

	test2() {
		a = 8;
		System.out.println("test2");
	}

	void f() {
		System.out.println("test2 f()");
		System.out.println(a);
	};

}

 abstract  class test1 {
	test1(){
		f();
		System.out.println("test1");
	}

	abstract void f() ;
}


结果:
test2 f()
0
test1
test2
test2 f()
0
test1
test2
test
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值