Java代码的执行顺序—总览(无多态)

类初始化方法clinit()

1,类初始化方法,一个类只有一次。
2,由编译器生成,分为两部分:(按出现的顺序执行)
		a.静态变量的显式赋值;
		b.静态代码块。

实例初始化方法init()

1,init()创建几个对象就执行几次,与构造器个数有关。
2,作用是创建对象时,为对象进行初始化操作,包括:(a、b按出现的顺序执行,c一定最后执行)
		a.为成员变量显示赋值(声明和赋值为两步);
		b.执行非静态代码块;
		c.执行构造器。
3,Java编译器会把上述三个部分的代码,合成一个叫做init(形参列表) 的实例初始化方法,即编译后的.class文件中没有构造器这个概念。
	即init(形参列表) 实例初始化方法的代码由三部分组成:
		a.成员变量显式赋值的代码;
		b.非静态代码块的代码;
		c.构造器的代码。

例:类的初始化

class Demo{
	static{
		System.out.println("1,Demo静块1");
	}
	
	private static String info=assign();

	static{
		System.out.println(info);
		System.out.println("2,Demo静块2");
	}

	public static String assign(){
		System.out.println(info);
		System.out.println("3,assign方法");
		return hello;
	}
}

//上述代码的类初始化为
class Demo{
	private static String info;
	<clinit>(){//类初始化方法
		//执行第一个静态代码块
		System.out.println("1,Demo静块1"); 
		
		//执行静态变量的赋值
		info=assign();//此处转跳到assign方法

		//执行第二个静态代码块
		System.out.println(info); 
		System.out.println("2,Demo静块2"); 
	}
	
	assign(){
		System.out.println(info); //为null
		System.out.println("3,assign方法");
		return "hello";
	}

}

包含父子类的情况
Java代码执行顺序问题—父子类、(实例)初始化块,见链接:http://t.csdn.cn/D0m1L

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值