java编译期常量static final

下面的两个初始化例子
class InitalizedClass {
	static {
		System.out.println("You have initalized InitalizedClass!");
	}
	public static int inititalize_varible = 1;

}

public class TestInitializeClass {
	public static void main(String[] args) {
		System.out.println(InitalizedClass.inititalize_varible);

	}

}

上面的结果是:
You have initalized nitalizedClass!
1

再看下面的例子
class InitalizedClass {
	static {
		System.out.println("You have initalized InitalizedClass!");
	}
       //和上面的例子唯一的差异就是此处的变量INITIALIZED_VARIBLE被声明为final
	public final static int INITIALIZED_VARIBLE = 1;

}

public class TestInitializeClass {
	public static void main(String[] args) {
		System.out.println(InitalizedClass.INITIALIZED_VARIBLE);

	}

}

上面的结果是:
1

为什么两个例子执行结果不一样,原因是第二个例子中的INITIALIZED_VARIBLE为编译期常量,它不会导致类的初始化的

你可能感兴趣的:(java)