java关于静态块儿 静态变量的执行顺序的笔记(转载)

执行顺序

还是上别人的吧 写的不错 了解得透彻 https://www.cnblogs.com/kingxiaozi/p/6021011.html

package com.osy.test;

/**
 * * @author 作者 E-mail: * @date 创建时间:2018年8月28日 上午10:33:36 * @version 1.0
 * * @parameter * @since * @return
 */
public class Test { // 1.第一步,准备加载类

    public static void main(String[] args) {
        new Test(); // 4.第四步,new一个类,但在new之前要处理匿名代码块
    }

    static int num = 4; // 2.第二步,静态变量和静态代码块的加载顺序由编写先后决定

    {
        num += 3;
        System.out.println("b"); // 5.第五步,按照顺序加载匿名代码块,代码块中有打印
    }

    int a = 5; // 6.第六步,按照顺序加载变量

    { // 成员变量第三个
        System.out.println("c"); // 7.第七步,按照顺序打印c
    }

    Test() { // 类的构造函数,第四个加载
        System.out.println("d"); // 8.第八步,最后加载构造函数,完成对象的建立
    }

    static { // 3.第三步,静态块,然后执行静态代码块,因为有输出,故打印a
        System.out.println("a");
    }

    static void run() // 静态方法,调用的时候才加载// 注意看,e没有加载
    {
        System.out.println("e");
    }
}

静态块(静态变量)——>成员变量——>代码块——>构造方法——>静态方法 

输出abcd

解释一哈 先是执行static静态块或者是静态变量 那个静态方法调用的时候才加载所以不管 然后会去执行main函数 然后new对象的时候执行构造块儿的方法 如果有构造函数

则会执行构造函数的方法

给个链接 看了之后会更清楚
https://blog.csdn.net/whing123/article/details/77988936
https://blog.csdn.net/wzw9353/article/details/74892149这个主要是讲jvm

https://www.cnblogs.com/numen-fan/p/7163745.html?utm_source=itdadao&utm_medium=referral 这个是解答为什么main函数是static的

posted @ 2018-08-28 11:43  好久不见你不知道的事  阅读(183)  评论(0编辑  收藏  举报