zoukankan      html  css  js  c++  java
  • 静态代码块在何时调用

    概括的说:静态代码块在类加载时调用,并且只调用一次。
    静态代码块最常用的作用就是:给一个对象的属性初始化。
    具体的说:
    1.当调用一个类的静态变量时,这个类中的静态代码块会执行。【只有静态代码块会执行】
    2.当调用一个 类的静态方法时,这个类中的静态代码块会执行。【只有静态代码块会执行】
    3.当创建一个 类的一个实例时,这个类中的静态代码块、非静态代码块(也叫构造代码块)、创建实例的相应的构造方法都会执行。
    //示例代码如下:
     package com.qls.test;
    /**
     * 在创建Test6的一个实例时:即Test6 test6=new Test6();
     * 调用的顺序依次是:静态代码块、非静态代码块、构造方法。并且静态代码块只运行依次。
     * 每创建一个Test6实例,非静态代码块、构造方法都会执行。这与静态代码块只执行一次是不同的。
     * @author 秦林森
     *
     */
    public class Test6 {
    /**
    * 静态代码块
    * @param args
    */
    static{
    System.out.println("Test6 static block");
    }
    /**
    * 非静态代码块
    * @param args
    */
    {
    System.out.println("Test6 non-static block");
    }
    /**
    * 构造方法
    * @param args
    */
    public Test6() {
    System.out.println("Test6 constructor with no arguments");
    }
    public Test6(String id){
    System.out.println("Test6 constructor with one argument id"+ id);
    }
    public static int book=1;
    public static  void sixi(){
    System.out.println("static method");
    }
     
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    /*new Test6();
    System.out.println("*****************");
    new Test6("1");*/
     
    //System.out.println(Test6.book);//调用静态变量时,只有静态代码块会执行。
    Test6.sixi();//在调用静态方法时,只有静态代码块会执行。
    //Test6.class.getClassLoader().loadClass(Test6.class.getName());//在Test6下面的main方法写这个语句,静态代码块会执行,
    //但是不在Test6这个类下面,这句话就不能让静态代码块执行。 

    //Class.forName(Test6.class.getName());//加载Test6时,只有静态代码块会执行。 

    }
     
    }/*Output:
    Test6 static block
    Test6 non-static block
    Test6 constructor with no arguments
    *****************
    Test6 non-static block
    Test6 constructor with one argument id1*///:~
     



  • 相关阅读:
    大规模分布式存储系统笔记一二章 概述与单机存储系统
    Apache Avro总结
    可汗学院公开课统计学笔记 第11到16集 样本 总体 方差 标准差 诸方差公式
    可汗学院公开课统计学笔记 第1到10集 均值 中位数 众数 极差 统计图
    Mock、Powermock使用汇总
    如何解决NoSuchMethodError
    2019年我看手机之华为篇
    活着
    log4j使用指北
    关于Eclipse导入maven项目报空指针异常
  • 原文地址:https://www.cnblogs.com/jpfss/p/9789953.html
Copyright © 2011-2022 走看看