classinitialization.java

来自「这是Java思想的最高集萃」· Java 代码 · 共 55 行

JAVA
55
字号
package chapter14;
import java.util.*;

class Initable{
	static final int staticFianl=47;
	static final int staticFinal2=ClassInitialization.rand.nextInt(1000);
	static{
		System.out.println("Initialization Initable");
	}
	/*
	 * static 语句在类被加载时都会被执行。
	 */
}

class Initable2{
	static int staticNonFinal=74;
	static{
		System.out.println("Initializing Initable2");
	}
}

class Initable3{
	static int staticNonFinal=74;
	static {
		System.out.println("Initializing Initables3");
	}
}

public class ClassInitialization {
	public static Random rand=new Random(47);
	public static void main(String args[])throws Exception{
		
		Class initable=Initable.class;
		/*
		 * 用了这条语句也就是用.class创建对Class对象的引用时,不会自动初始化类。
		 */
		System.out.println("After creating initable ref");
		System.out.println(Initable.staticFianl);
		System.out.println(Initable.staticFinal2);
/******************** ********************************/		
		System.out.println(Initable2.staticNonFinal);
/****************************************************/			
		try{
			Class.forName("chapter14.Initable3");
			/*
			 * 如果没能加上chapter14.抛出了异常,加上后就正常了。
			 */
		}catch(Exception e){}
		System.out.println("After creating Initable3 ref");
		System.out.println(Initable3.staticNonFinal);
	}
	

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?