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

Posted 小兰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 


以上是关于Java自由块(静态和非静态)(转载)的主要内容,如果未能解决你的问题,请参考以下文章

Java中静态代码块构造代码块构造函数普通代码块(转载)

Java复习2

java中成员变量代码块构造函数运行顺序

静态和非静态初始化代码块有啥区别

关于静态变量和非静态变量的区别

Java中static关键字和代码块的学习