美文网首页Java部分
java中的构造代码块

java中的构造代码块

作者: Geroge1226 | 来源:发表于2020-12-02 18:23 被阅读0次

1、介绍

java中用"{}"括起来的称为代码块,代码块可分为以下四种:静态代码块构造代码块构造方法块普通代码块

2、详细说明

代码示例

public class DemoA {

    static {
        System.out.println("静态代码块");
    }

    {
        System.out.println("构造代码块A");
    }
    public DemoA(){
        System.out.println("构造函数代码块");
    }
    public void getString(){
        System.out.println("普通方法代码块");
    }
    {
        System.out.println("构造代码块B");
    }
    public static void main(String[] args) {
        DemoA d1 =  new DemoA();
        d1.getString();
        System.out.println("----------");
        DemoA d2 =  new DemoA();
        d2.getString();
    }
}
  • 运行结果:
静态代码块
构造代码块A
构造代码块B
构造函数代码块
普通方法代码块
----------
构造代码块A
构造代码块B
构造函数代码块
普通方法代码块
  • 以上代码通过字节码反编译后得到:
public class DemoA {
    public DemoA() {
        System.out.println("构造代码块A");
        System.out.println("构造代码块B");
        System.out.println("构造函数代码块");
    }

    public void getString() {
        System.out.println("普通方法代码块");
    }

    public static void main(String[] args) {
        DemoA d1 = new DemoA();
        d1.getString();
        System.out.println("----------");
        DemoA d2 = new DemoA();
        d2.getString();
    }

    static {
        System.out.println("静态代码块");
    }
}

通过以上运行结果可得知一下结论:

1、静态代码块只会在初始化对象时候执行一次
2、构造代码块由于普通代码块执行,但在静态代码块之后执行,与自己所在的代码位置无关
3、通过字节码反编译看出,编译器会将构造代码块存放于构造函数中,优于构造函数中其他代码执行。

运行优先级从高到低为:静态代码块 > 构造代码块 > 构造方法 > 普通代码块

相关文章

网友评论

    本文标题:java中的构造代码块

    本文链接:https://www.haomeiwen.com/subject/gcjuwktx.html