代码块

时间:2021-07-14
本文章向大家介绍代码块,主要包括代码块使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

什么是代码块

用大括号将多行语句涵盖起来 形成一个独立的代码区间 感觉类似于方法体

代码块分类

  1. 普通代码块 定义在方法中
  2. 构造代码块 定义在类中
  3. 静态代码块 定义在类中

普通代码块

大括号括起来的代码块

package com.oop.demo05;

/**
 * 代码块
 */
public class Demo01 {
    public void say() {
        {
            System.out.println("我是普通代码块");
        }
    }
}

package com.oop;


import com.oop.demo05.Demo01;

public class Applcation {
    public static void main(String[] args) {
        Demo01 demo01 = new Demo01();
        demo01.say(); // 我是普通代码块
    }
}

构造代码块

构造代码块早于构造函数执行 并且每次实例化都会执行其中的内容

package com.oop.demo05;

/**
 * 代码块
 */
public class Demo02 {
    {
        System.out.println("我是构造代码块");
    }

    {
        System.out.println("我是构造代码块1");
    }

    public Demo02() {
        System.out.println("无参构造方法");
    }

    public Demo02(int a) {
        System.out.println("==>Get a \t" + a);
    }
}


package com.oop;


import com.oop.demo05.Demo02;

public class Applcation {
    public static void main(String[] args) {
        Demo02 demo02 = new Demo02();
        Demo02 demo = new Demo02(1);
    }
}

测试输出

静态代码块

在类加载的时候执行 并且仅仅只执行一次
早于构造代码块 早于构造函数执行

package com.oop.demo05;

/**
 * 代码块
 */
public class Demo03 {
    static {
        System.out.println("我是静态方法构造块");
    }
    
    {
        System.out.println("我是构造代码块1");
    }

    public Demo03() {
        System.out.println("无参构造方法");
    }

    public Demo03(int a) {
        System.out.println("==>Get a \t" + a);
    }
}

package com.oop;


import com.oop.demo05.Demo03;

public class Applcation {
    public static void main(String[] args) {
        Demo03 demo03 = new Demo03();
        System.out.println("================================");
        Demo03 demo = new Demo03(1);
    }
}

测试输出

小结

  1. 构造代码块当且仅当类实例化执行 且早于构造函数执行 每次实例化都会执行
  2. 静态代码块类实例化执行 当且仅当只会加载一次 且早于构造代码块执行
  3. 执行顺序 静态代码块 > 构造代码块 > 构造函数
即使再小的帆也能远航

原文地址:https://www.cnblogs.com/juanbao/p/15010106.html