Java测试构造器,代码块,变量的初始化先后顺序包括静态的

标题:Java测试构造器,代码块,变量的初始化先后顺序包括静态的

一、 构造器,代码块,变量的初始化先后顺序

  • 1.先为所有变量,创建空间,赋默认值【0,null等等默认值】
  • 2.按顺序初始化【变量、代码块的顺序初始化,谁在前面,谁先初始化】
  • 3.按构造器初始化

eg:

  • a=0,b=0;
  • b=5->6 【因为代码块在int b的前面,所以先执行代码块,在执行b=6】
  • b=8【执行构造器中的初始化】

注意:

  • 此处的代码块中System.out.println(b);会编译出错,是因为b在int b=6的前面,故先执行b的初始化【b=5】所以在此之前不能输出未初始化的b。
  • 后面一处的System.out.println(b);是因为避免b未初始化而使用,故也编译失败
 {
    	//System.out.println(b);
    	b=5;//在定义之前不能使用,但可以赋值 
    	//System.out.println(b);
	}  

完整代码如下:

/**
 * 测试构造器,代码块,变量的初始化先后顺序
 *1. 先为所有变量,创建空间,赋默认值【0,null】
 * 2.按顺序初始化【变量、代码块的顺序初始化】
 * 3.按构造器初始化
 * @author dell
 *
 */

public class InitTest02 {
	public InitTest02() {
		System.out.println(b);
		b=8;//
	}
	private int a;
	
    {
    	//System.out.println(b);
    	b=5;//在定义之前不能使用,但可以赋值 
    	//System.out.println(b);
	}    
	private int b=6;
	public static void main(String[] args) {
		InitTest02 init = new InitTest02();
		System.out.println("main:"+init.b);

	
	}
}

二、构造器,代码块,变量的初始化先后顺序 静态的【原理类似】

  • a=0,b=0
  • b=5
  • b=8
/**
 * 先为所有类变量创建空间,赋初值【0,null】
 * 执行初始化【自己设置的初始化,】
 * @author dell
 *
 */
public class InitTest03 {
	static int a;
	static {
//		System.out.println(b);
		b=5;
	}
	static int b=8;
	
	public static void main(String[] args) {
		System.out.println("理论为5:"+InitTest03.b);//理论为5:8
	
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值