Java基础(basis)-----代码块详解

时间:2022-11-16 19:17:35

1.静态代码块

格式: static{ 内容..... }

  • 随着类的加载而加载,而且只被加载一次
  • 多个静态代码块之间按照顺序结构执行
  • 优先其他各种代码块以及构造函数先执行
  • 静态的代码块中只能执行静态的结构(类属性,类方法)

   2.构造代码块

格式:{  内容......   }

  • 每创建一个类的对象,非静态代码块就加载一次
  • 非静态代码块的执行要早于构造器
  • 一个类中可以有多个非静态的代码块,多个代码块之间按照顺序结构执行
  • 可以对类的属性(静态的 & 非静态的)进行初始化操作,同时也可以调用本类声明的方法(静态的 & 非静态的)

3.普通代码块

普通代码块是在方法体中定义的

格式:权限修饰符  返回值  方法名(){ { 内容...... } }

package com.codeblock;

/**
 * 代码块
 *
 * @author yyx 2019年2月15日
 */
public class CodeBlockDemo {
    public static void main(String[] args) {
        SubClass subClass = new SubClass();
        subClass.sayHello();
        System.out.println("-------------");
        SubClass subClass1 = new SubClass();
    }
}

class SuperClass {
    static {
        System.out.println("父类静态代码块!");
    }

    {
        System.out.println("父类构造代码块!");
    }

    public SuperClass() {
        System.out.println("父类构造函数");
    }
}

class SubClass extends SuperClass {
    static {
        System.out.println("子类静态代码块!");
    }

    {
        System.out.println("子类构造代码块!");
    }

    public SubClass() {
        System.out.println("子类构造函数");
    }

    public void sayHello() {
        {
            System.out.println("子类普通代码块");
        }
    }
}运行结果:

父类静态代码块!
子类静态代码块!
父类构造代码块!
父类构造函数
子类构造代码块!
子类构造函数
子类普通代码块
-------------
父类构造代码块!
父类构造函数
子类构造代码块!
子类构造函数