class="java" name="code">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出对象后(构造方法)加载有初始值的属性和代码快(有初始值的静态属性已经加载过所以不会在加载)顺序从上至下,最后调用方法。
//综合结论:
类加载不会加载静态方法、普通方法、普通代码快、没有初始值的属性、有初始值非静态的属性。
类加载会加载静态代码快、有初始值的静态属性,顺序从上至下。