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*///:~
     



  • 相关阅读:
    SCI写作经典替换词,瞬间高大上!(转)
    最佳化常用测试函数 Optimization Test functions
    算法复杂度速查表
    VS 代码行统计
    CPLEX IDE 菜单栏语言设置( 中文 英文 韩文 等多国语言 设置)
    如何从PDF文件中提取矢量图
    Matlab无法打开M文件的错误( Undefined function or method 'uiopen' for input arguments of type 'char)
    visual studio 资源视图 空白 解决方案
    MFC DialogBar 按钮灰色不响应
    嗨翻C语言笔记(二)
  • 原文地址:https://www.cnblogs.com/jpfss/p/9789953.html
Copyright © 2011-2022 走看看