Java自由块(静态和非静态)(转载)

java中的自由块分为两种:

静态块和非静态块

静态块:

 public class Test {
2     static int x = 10;
3     //静态块:静态块的执行时机是在class文件装载的时候;静态块只会执行一次
4     //多个静态块的时候,按出现顺序执行
5     static{
6         x+=5;
7     }
8 }

非静态块:

 public class Test {
2     //非静态块:每次初始化一个对象,都会导致一次非静态块的执行;在构造函数执行之前执行
3     //继承关系:父类的非静态块->父类的构造函数->自己的自由块->自己的构造函数
4     {
5         System.out.println("before");
6     }
7 }

测试demo:

 public class Test {
 2 
 3     static int x = 10;
 4     //静态块:静态块的执行时机是在class文件装载的时候;静态块只会执行一次
 5     //多个静态块的时候,按出现顺序执行
 6     static{
 7         x+=5;
 8     }
 9     public static void main(String[] args) {
10         new Test();
11         System.out.println(x);
12     }
13     //静态块
14     static {
15         x/=3;
16     }
17     public Test(){
18         System.out.println("构造函数");
19     }
20     //非静态块:每次初始化一个对象,都会导致一次非静态块的执行;在构造函数执行之前执行
21     //继承关系:父类的非静态块->父类的构造函数->自己的自由块->自己的构造函数
22     {
23         System.out.println("before");
24     }
25 }

控制台输出:

before
构造函数
5
原文地址:https://www.cnblogs.com/fengxiaolan/p/6013633.html