美文网首页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