美文网首页
静态代码块、普通代码块和构造函数

静态代码块、普通代码块和构造函数

作者: _fatef | 来源:发表于2017-11-03 18:01 被阅读0次

    一、加载顺序

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

    注:如果一个类中有多个同一级别的代码块,则从上至下顺序加载。

    二、加载次数

    静态代码块当且仅当在类第一次被实例化的时候加载一次,而普通代码块和构造函数则在类每次被实例化时都要加载一次。

    package cn.examination.test;
    
    import org.junit.Test;
    
    public class ThisTest {
    
    public static String str = "1";
    
    //构造函数
    
    public ThisTest(){
    
    str += "q";
    
    }
    
    //普通代码块1
    
    {
    
    str += "w";
    
    }
    
    //普通代码块2
    
    {
    
    str += "e";
    
    }
    
    //静态代码块1
    
    static {
    
    str += "r";
    
    }
    
    //静态代码块1
    
    static {
    
    str += "t";
    
    }
    
    /*
    
    * 测试
    
    */
    
    @Test
    
    public void testA(){
    
    new ThisTest();
    
    System.out.println("第一次实例化:" + str);
    
    new ThisTest();
    
    System.out.println("第二次实例化:" + str);
    
    new ThisTest();
    
    System.out.println("第三次实例化:" + str);
    
    }
    
    }
    

    执行结果:

    第一次实例化:1rtweqweq
    
    第二次实例化:1rtweqweqweq
    
    第三次实例化:1rtweqweqweqweq
    

    由此代码及执行结果可以很清晰的看出三者之间加载顺序、加载次数。

    相关文章

      网友评论

          本文标题:静态代码块、普通代码块和构造函数

          本文链接:https://www.haomeiwen.com/subject/uzztmxtx.html