• static语句块、普通语句块和构造函数


          最近忙着投简历找工作,当然得为笔试面试准备一下,把以前学习时欠下的帐补回来。因为当初学Java、Jsp、J2EE课程时都是会用了能做出东西来就行的心态,没有做过笔记,现在很多基础的东西都忘了,哎。从今往后,尽可能把学过的东西都整理成博客,方便复习总结。

         记得以前笔试时有一题是问Java的类初始化时static语句块和构造函数的执行顺序和次数的,当时答对了但是心里拿不准,今天查查资料顺便写个小例子巩固一下。

     1 public class Test1 {
     2     public static int X=100;  
     3     public final static int Y=200;
     4     public Test1(){  
     5         System.out.println("Test构造函数执行");  
     6     }  
     7     static{  
     8         System.out.println("static语句块执行");  
     9     }  
    10     
    11     {
    12         System.out.println("not static 语句块执行");
    13     }
    14     
    15     public static void display(){  
    16         System.out.println("静态方法被执行");  
    17     }  
    18     public void display_1(){  
    19         System.out.println("实例方法被执行");  
    20     }  
    21     
    22     public static void main(String [] args){
    23         Test1.display();
    24         System.out.println("x=" + Test1.X + "   y=" + Test1.Y );
    25         Test1.display();
    26         Test1 t1 = new Test1();
    27         Test1 t2 = new Test1();
    28         System.out.println("X=" + t1.X + "   Y=" + t1.Y);
    29         Test1.display();
    30     }
    31 }

    运行结果

    static语句块执行
    静态方法被执行
    x=100   y=200
    静态方法被执行
    not static 语句块执行
    Test构造函数执行
    not static 语句块执行
    Test构造函数执行
    X=100   Y=200
    静态方法被执行

         可以看出static代码块是在类加载时自动执行的且只执行一次,非静态代码块在创建对象自动执行的代码,不创建对象不执行该类的非静态代码块。 顺序为 静态代码块--》非静态代码块--》类构造方法。第一次创建类实例、调用静态方法、访问静态变量或使用用Class.forName()显示加载类的时候都会执行static语句块。另外有多个static语句块时按顺序执行。

    如在第一个static语句块之后再添加一个static语句块

     static{  
            System.out.println("static语句块执行");  
        }  
        
        static{  
            System.out.println("static222语句块执行");  
        } 
    

      则运行结果为

    static语句块执行
    static222语句块执行
    静态方法被执行
    x=100   y=200
    

      

  • 相关阅读:
    关于Synchronized(一)
    关于Spring——事务(三)
    B2B、B2C、C2C、O2O、P2C、P2P
    《疯狂的程序员》读后有感
    祝贺拿到Offer
    软件测试中一般术语的英文和缩写
    笔试题目
    笔试题
    编码
    IO包中的其他类 打印流,序列流,操作对象,管道流,RandomAccessFile,操作基本数据类型,操作字节数组
  • 原文地址:https://www.cnblogs.com/waimai/p/2945841.html
Copyright © 2020-2023  润新知