zoukankan      html  css  js  c++  java
  • 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的

  • 相关阅读:
    v-bind绑定属性样式——class的三种绑定方式
    vue知识点15
    iOS开发——heightForHeaderInSection设置高度无效
    iOS开发——AFNetworking基于https的使用
    iOS开发——循环遍历的比较
    iOS开发——Block使用小结
    iOS开发——GCD总结
    iOS开发者中心重置设备列表
    iOS开发—— Couldn't add the Keychain Item
    iOS——扬声器与听筒的切换
  • 原文地址:https://www.cnblogs.com/oushiyang/p/9547212.html
Copyright © 2011-2022 走看看