首页 > 代码库 > java 成员初始化

java 成员初始化

public class Test {
	private static int i;
	private int k;
	
	//静态代码块,主要用于初始化类的静态成员变量
	//在静态代码块中不能使用非静态的成员变量或方法
	static {
		System.out.println("赋值前:i--------->"+i);
		i = 1;
		System.out.println("赋值后:i--------->"+i);
	}
	
	//代码块
	{
		System.out.println("赋值前:k--------->"+k);
		k = 1;
		System.out.println("赋值后:i--------->"+k);
	}
	
	public Test(){
	        super();
		System.out.println("---进入构造器---");
		System.out.println("i------>"+i);
		System.out.println("k------>"+k);
	}
	
	
	public static void main(String[] args) {
		System.out.println("---进入main方法---");
		new Test();
		System.out.println("completed!!!");
	}
	
}

// 运行结果

//赋值前:i--------->0
//赋值后:i--------->1
//---进入main方法---
//赋值前:k--------->0
//赋值后:i--------->1
//---进入构造器---
//i------>1
//k------>1
//completed!!!

    从运行结果我们可以看出Java初始化成员变量是:先静态 然后 非静态

    大致的流程如下:

    初始化静态成员变量 -> 初始化静态代码块 (静态变量或静态代码块,只在第一次调用该类时执行初始化) -> 初始化一般成员变量 -> 初始化代码块 -> 进入构造方法 -> 首先执行super()(可以选择不同的父类构造方法,默认为无参),初始化父类的成员变量 -> 执行构造方法中的初始化



java 成员初始化