java程序加载过程

在java中,当创建一个对象时总的加载过程如下:

首先加载要创建对象的类及其直接与间接父类。

在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序执行。

需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序执行。

最后执行构造器,构造器执行完毕,对象生成。

class MyclassFather
{
	public MyclassFather() {
		System.out.println("执行父类构造器");
	}
}

class Myclass extends MyclassFather{
	//非静态成员
	Unstatic u=new Unstatic();
	final UnstaticFinal uf=new UnstaticFinal();
	{
		System.out.println("执行非静态语句块");
	}
	//静态成员
	static 
	{
		System.out.println("执行静态语句块");
	}
	static final StaticFinal sf=new StaticFinal();
	static Static s=new Static();
	//类构造器
	Myclass()
	{
		System.out.println("执行子类构造器");
	}
	
}

//用来打印静态final的成员变量的类
class StaticFinal{
	StaticFinal()
	{
		System.out.println("静态非final的成员变量初始化");
	}
}

//用来打印静态非final的成员变量的类
class Static{
	Static()
	{
		System.out.println("静态非final的成员变量初始化");
	}
}

//用来打印非静态final的成员变量的类
class UnstaticFinal
{
	UnstaticFinal(){
		System.out.println("非静态final成员变量初始化");
	}
}

//用来打印非静态非final的成员变量的类
class Unstatic
{
	Unstatic()
	{
		System.out.println("非静态非final成员变量初始化");
	}
}
	
public class guocheng {
	public static void main(String args[])
	{
		new Myclass();
	}

}
执行静态语句块
静态非final的成员变量初始化
静态非final的成员变量初始化
执行父类构造器
非静态非final成员变量初始化
非静态final成员变量初始化
执行非静态语句块
执行子类构造器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值