java类加载顺序

package com.demo;

/**
 * @Description 类加载顺序
 * @author FuJianyong
 * 2015-2-6上午11:21:37
 */
public class ClassLoaderSequence {
	
	String s1 = "成员属性"; 
	
	static String s2 = "静态属性";
	
	String s3;
	
	static String s4;
	
	static {
		System.out.println("静态代码快");
	}
	
	{
		System.out.println("普通代码快");
	}
	
	public static void test1() {
		System.out.println("静态方法");
	}
	
	public void test2() {
		System.out.println("普通方法");
	}
	
	public static void main(String[] args) {
//		ClassLoaderSequence.test1();
		new ClassLoaderSequence().test2();
	}
}


//运行 ClassLoaderSequence.test1(); 得出结论:类加载会先加载有初始值的静态属性和静态代码快顺序从上至下,最后调用方法。

//运行 new ClassLoaderSequence().test2(); 得出结论:先加载类,new出对象后(构造方法)加载有初始值的属性和代码快(有初始值的静态属性已经加载过所以不会在加载)顺序从上至下,最后调用方法。

//综合结论:
类加载不会加载静态方法、普通方法、普通代码快、没有初始值的属性、有初始值非静态的属性。
类加载会加载静态代码快、有初始值的静态属性,顺序从上至下。

你可能感兴趣的