【Java基础】代码块

1.代码块说明

一对花括号表示,仅可以使用static修饰,可以用来对类或对象进行初始化。

  • 静态代码块:static修饰

    • 随着类的加载而执行,只执行一次,有多个时,按顺序执行。
    • 无法调用非静态结构。
  • 非静态代码块

    • 每次创建对象时都会执行一次,且优先于构造器执行,有多个时,按顺序执行。
    • 可以调用静态结构,非静态结构。

2.使用

以下类中有静态属性name和非静态属性age。

public class CodeBlock {
    private static String name;
    private int age;

    {
        name = "芜湖";
        age = 18;
        System.out.println("代码块:"+name+","+age);
    }

    static {
        name = "张三";
        //age = 20; 报错,静态代码块中不能使用非静态结构
        System.out.println("静态代码块:"+name);
    }

    public static void main(String[] args) {
        System.out.println("main方法");
        CodeBlock codeBlock1 = new CodeBlock();
        CodeBlock codeBlock2 = new CodeBlock();
    }
}

执行main方法输出以下结果。

静态代码块:张三
main方法
代码块:芜湖,18
代码块:芜湖,18

PS:创建子类对象时,涉及到父类、子类中代码块、构造器的加载顺序。
由父及子,静态先行

posted @ 2022-09-20 14:38  植树chen  阅读(15)  评论(0编辑  收藏  举报