Java静态代码块、构造函数、构造代码块

package test;  
public class Test {      
   public static void main(String... args) {
          TestA a;
          a = new TestA();
          a = new TestA();
          TestA aa = new TestA();
      }
  }  
  class TestA {
      {
          System.out.println("TestA code create");
      }      
          private TestB b = new TestB();      
          private static TestC c = new TestC();      
          
          public TestA() {
              System.out.println("TestA create");
      }      
          
          static {
             System.out.println("TestA static create");
      }
  }  
  class TestB {      
     public TestB() {
          System.out.println("TestB create");
      }
  }  
  class TestC {      
     public TestC() {
          System.out.println("TestC create");
      }
  }

打印结果

TestC create
TestA static create
TestA code create
TestB create
TestA create
TestA code create
TestB create
TestA create
TestA code create
TestB create
TestA create


static特点:

  1.    随着类的加载而加载(随着类的消失而消失,生命周期最长)  
 2.    优先于对象存在  
 3.    被所有对象所共享  
 4.    可以直接被类所调用  
 5.    static是一个修饰符,用于修饰成员

构造代码块

作用:给对象进行初始化,对象一建立就运行,而且优先于构造函数执行。

  和构造函数的区别:
  构造代码块是给所有对象进行统一初始化;而构造函数是给对应的对象初始化
  构造代码块中定义的是不同对象共性的初始化内容

静态代码块

 static
  {
      静态代码块中的执行语句;
  }
  特点:随着类的加载而执行,只执行一次(再new一个对象也不会执行,类只加载一次),
  如果定义在有主函数的类中,则优先于主函数执行。用于给类进行初始化。
  有些类不用创建对象,无法用构造函数初始化,就通过静态代码块初始化。

  执行顺序:静态代码块先执行,如果有对象,构造代码块先执行,然后是构造函数。
  如果没有对象,则构造代码块和构造函数都不会执行。




你可能感兴趣的:(JAVA后端)