Java类加载过程代码实例

代码以及加载过程

public class StaticTest {
                                                           //  类加载
    public static int k = 0;                               //  k=0(print自加1)
                                                           //       static new ...("t1") 调用所有非静态方法
    public static StaticTest t1 = new StaticTest("t1");//           print("i")
                                                           //1*             k=1  out:[1:j i=0 n=0]        n=1 i=1
    public static StaticTest t2 = new StaticTest("t2");//           print("构造块")
    public static int i = print("i");                      //2*             k=2  out:[2:构造块 i=1 n=1]    n=2 i=2
    public static int n = 99;                              //           public StaticTest("t1")
                                                           //3*             k=3  out:[3:t1 i=2 n=2]       n=3 i=3
    public int j = print("j");                             //       static new ...("t2") 调用所有非静态方法
                                                           //           print("j")
    {                                                      //4*             k=4  out:[4:j i=3 n=3]        n=4 i=4
        print("构造快");                                    //           print("构造块")
    }                                                      //5*             k=5  out:[5:构造块 i=4 n=4]    n=5 i=5
                                                           //           public StaticTest("t2")
    static{                                                //6*             k=6  out:[6:t2 i=5 n=5]       n=6 i=6
        print("静态块");                                    //       static int i = print("i")
    }                                                      //           print("i")
                                                           //7*             k=7  out:[7:i i=6 n=6]        n=7 i=7
    public StaticTest(String str) {                        //       static int n=99
        System.out.println((++k)+":"+str+" i="+i+" n="+n); //           n=99
        ++n;                                               //       static {print("静态块")}
        ++i;                                               //           print("静态块")
    }                                                      //8*             k=8  out:[8:静态块 i=7 n=99]   n=100 i=8
                                                           //  实例化
    public static int print(String str) {                  //       int j = print("j")
        System.out.println((++k)+":"+str+" i="+i+" n="+n); //           print("j")
        ++i;                                               //9*             k=9  out:[9:j i=8 n=100]      n=101 i=9
        return ++n;                                        //       {print("构造块")}
    }                                                      //           print("构造块")
                                                           //10*            k=10 out:[10:构造块 i=9 n=101] n=102 i=10
    public static void main(String[] args) {               //       new StaticTest("init")
        StaticTest t = new StaticTest("init");             //11*            k=11 out:[11:init i=10 n=102] n=103 i=11
    }                                                      //
}                         

总结:
类加载 -> 实例化
类加载: 静态变量 静态代码块按顺序执行
实例化: 非静态变量 非静态代码块按顺序执行 -> 构造函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值