zoukankan      html  css  js  c++  java
  • java中代码块的认知

      在以往面试题中,出现过很多次关于代码块执行顺序的题目,目前可算是搞清楚执行顺序了。看以下代码:

      

    package com.itcast.code;
    
    public class BlockTest {
        static{
            System.out.println("我是BlockTest的静态代码块");
        }
        public BlockTest(){
            System.out.println("我是BlockTest的无参构造");
        }
        {
            System.out.println("我是BlockTest的构造代码块");
        }
        public static void main(String[] args) {
            System.out.println("我是BlockTest的主函数。。。");
            Coder c = new Coder();
            Coder c2 = new Coder();
        }
    }
    
    class Coder{
        static{
            System.out.println("我是Coder的静态代码块。。。");
        }
        {
            System.out.println("我是Coder的构造代码块。。。");
        }
        public Coder(){
            System.out.println("我是Coder的无参构造。。。");
        }
    }

    以上代码执行结果是:我是BlockTest的静态代码块  ------>   我是BlockTest的主函数。。。  ------>    我是Coder的静态代码块。。。    ------>   我是Coder的构造代码块。。。

    ------>     我是Coder的无参构造。。。     ------>    我是Coder的构造代码块。。。     ------->     我是Coder的无参构造。。。

    静态代码块最先执行,因为它是随着类的加载而加载,优先于对象的存在。其次执行的是主函数,因为主函数是程序执行的入口,在静态代码块执行完之后必然是它执行。然后因为创建了Coder对象,那么它肯定会先执行它自己的静态代码块,接着调用构造代码块,最后再调用无参构造对对象进行初始化。

    一个完美的执行流程就是这样,每天学习一点点,每天进步一点点,加油吧骚年!期待下一次的面试题能够完美解答!

  • 相关阅读:
    【POJ 1958】 Strange Towers of Hanoi
    【HNOI 2003】 激光炸弹
    【POJ 3263】 Tallest Cow
    【POJ 2689】 Prime Distance
    【POJ 2777】 Count Color
    【POJ 1995】 Raising Modulo Numbers
    【POJ 1845】 Sumdiv
    6月16日省中集训题解
    【TJOI 2018】数学计算
    【POJ 1275】 Cashier Employment
  • 原文地址:https://www.cnblogs.com/wgl-gdyuan/p/10057919.html
Copyright © 2011-2022 走看看