类加载顺序(1)

package loader;

public class Test {

    
    /**类加载顺序
     * 一:只研究Person类,没有继承类的情况
     * 1.在主函数中调用person类构造方法创建对象
     * 2.在调用构造方法前先加载static静态块(可以调用静态方法)
     * 3.加载普通构造块(可以调用普通方法)
     * 4.完成构造方法
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Person p=new Person();//第一步
    
    }

}
package loader;

public class Person {
    public String test="PersonField";
    public static String testStatic="PersonStaticField";
    
    public Person(){//第1.5步
        //第四步
        System.out.println("Person的构造方法");
    }
    public void test(){
        System.out.println("Person的普通方法");
    }
    public static void testStatic(){
        System.out.println("Person的静态方法");
    }
    
    {//第三步
        this.test();
        System.out.println("Person的普通块");
    }
    static{//第二步
        Person.testStatic();
        System.out.println("Person的静态块");
    }
    

}
输出顺序:
Person的静态方法 Person的静态块 Person的普通方法 Person的普通块 Person的构造方法

package loader;
public class Person {public String test="PersonField";public static String testStatic="PersonStaticField";public Person(){//第一。五步//第四步System.out.println("Person的构造方法");}public void test(){System.out.println("Person的普通方法");}public static void testStatic(){System.out.println(Person.testStatic);System.out.println("Person的静态方法");}{//第三步this.test();System.out.println("Person的普通块");}static{//第二步Person.testStatic();System.out.println("Person的静态块");}
}

 

posted on 2020-03-03 15:29  刀锋93  阅读(192)  评论(0编辑  收藏  举报

导航