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 
    12     void print() {
    13         System.out.println("ccccccccccccccccccc");
    14     }
    15 
    16     static {
    17         System.out.println("eeeeeeeeeeeeeeeeeee");
    18     }
    19 }
     1 public class Test9 {
     2     static {
     3         System.out.println("dddddddddddddddddddd");
     4     }
     5 
     6     public static void main(String[] args) {
     7 
     8         Test7 d = new Test7();
     9         d.print();
    10         new Test7();
    11     }
    12 
    13     static {
    14         System.out.println("fffffffffffffffffff");
    15     }
    16 
    17 }

    程序运行的结果为:

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

    结论:优先级顺序为

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

  • 相关阅读:
    机器学习之大数据集
    机器学习之协同过滤算法(推荐系统)
    机器学习之异常检测
    机器学习之PCA主成分分析
    机器学习之K-means算法
    机器学习之SVM支持向量机
    机器学习之模型选择与改进
    springmvc spring mybatis插入mysql中文乱码
    springmvc和http404错误
    oracle删除users表空间
  • 原文地址:https://www.cnblogs.com/dafa4java/p/3242300.html
Copyright © 2011-2022 走看看