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的