zoukankan      html  css  js  c++  java
  • 执行构造的顺序

    构造代码块 :给对象进行初始化,对象一建立就运行而且优于构造函数执行。 
    构造代码块和构造函数的区别 :构造代码块是给所有对象进行统一初始化,而构造函数是给指定的对象进行初始化。 
    静态代码块 :随着类的加载而执行,只执行一次。 
    分析下面程序执行的结果:

    1. class Test7 {
    2.      static {
    3.         System.out.println("aaaaaaaaaaaaaaaaaaa");
    4.      }
    5.      {
    6.          System.out.println("bbbbbbbbbbbbbbbbbbb");
    7.      }
    8.      Test7(){
    9.          System.out.println("构造函数运行");
    10.     }
    11.      void print() {
    12.         System.out.println("ccccccccccccccccccc");
    13.      }
    14.      static {
    15.          System.out.println("eeeeeeeeeeeeeeeeeee");
    16.     }
    17. }
    复制代码
    1. public class Test9 {
    2. static {
    3.         System.out.println("dddddddddddddddddddd");
    4.      }
    5.     public static void main(String[] args) {
    6.        Test7 d = new Test7();
    7.          d.print();
    8.         new Test7();
    9.      }
    10.     static {
    11.        System.out.println("fffffffffffffffffff");
    12.     }
    13. }
    复制代码



    程序运行的结果为:

    dddddddddddddddddddd 
    fffffffffffffffffff 
    aaaaaaaaaaaaaaaaaaa 
    eeeeeeeeeeeeeeeeeee 
    bbbbbbbbbbbbbbbbbbb 
    构造函数运行 
    ccccccccccccccccccc                //因为静态代码块随着类的加载而执行且只执行一次 
    bbbbbbbbbbbbbbbbbbb //这里重新new一个对象时,静态代码块不会执行,而构造代码块和构造函数执行 
    构造函数运行 

    结论:优先级顺序为

    静态代码块>构造代码块>构造函数 

  • 相关阅读:
    js多个基本类型计算
    移动端弹窗滚动穿透问题
    length-of-longest-substring 无重复字符的最长子串 javascript解答
    addTwoNumbers两数之和 javascript解答
    two-sum两数之和 javascript解答
    js防抖和节流
    React / Vue 项目时为什么要在列表组件中写 Key,其作用是什么?
    二进制文件流处理笔记
    ES6 class 类的理解(一)
    django之js模板插件artTemplate的使用
  • 原文地址:https://www.cnblogs.com/luoquan/p/5319826.html
Copyright © 2011-2022 走看看