java 类加载顺序

来源:互联网 发布:关宁锦防线 知乎 编辑:程序博客网 时间:2024/05/21 20:22
package fly4j.test;import flytool.common.file.FileTool;import java.net.URL;/** * 启动 * Created by sff on 2017/6/18. */public class Startup {    public static String dd = "sff";    public static void main(String args[]) throws Exception {        URL baseUrl = FileTool.jarFile(Startup.class).getParentFile().getParentFile().toURI().toURL();        startup(baseUrl);    }    private static void startup(URL baseUrl) throws Exception{        dd = "gggggggg";        TestStaci.ss();    }}


package fly4j.test;/** * Created by sff on 2017/7/18. */public class TestStaci {    static {        System.out.println(Startup.dd);    }    private String name = "ff";    public static void ss(){        System.out.println("end");    }}

运行结果:



类加载顺序是:先加载Startup类,因为第一步要执行main函数。在加载main函数之前先加载Startup的dd成员变量。然后加载main函数。接下来加载startup方法。再加载FileTool类,再运行到dd = "gggggg".这段代码运行完之后,才会加载TestStaci类,TestStaci类中先加载static{}, 再加载ss(), 最后加载name成员变量。



类加载分为两部分,类加载顺序是编译顺序决定的,类加载进去之后才会加载它内部的static 和非static,类内部是先加载static的

原创粉丝点击