zoukankan      html  css  js  c++  java
  • Java:构造代码块,静态代码块


    本文内容:

    • 局部代码块
    • 构造代码块
    • 静态代码块
    • 补充

     首发日期:2018-03-28


    局部代码块:

    局部代码块用于限制变量的生命周期,如果希望某些变量在某一过程之后直接失效而不希望被后面继续操作时,可以使用局部变量来限制变量的生命周期带局部代码块中


    构造代码块:

    • 构造函数只对对应的对象进行初始化,构造代码块给类的所有对象进行初始化。
    • 由于构造代码块给类的所有对象进行初始化,所以对于每个对象都要初始化成一样值的变量,可以防止构造代码块中初始化。
    class Person{
        String gender;
        int age;
        { //构造代码块
            System.out.println("构造代码块运行阶段");
            gender="男";
        }
        Person(){//构造函数
            System.out.println("构造函数Person()运行阶段");
        }
        Person(int age){//构造函数
            System.out.println("构造函数Person(int age)运行阶段");
            this.age=age;
        }
        
    }
    
    
    public class Demo {
        public static void main(String[] args) {
            Person p1=new Person();
            System.out.println(p1.gender);
            Person p2=new Person(18);
            System.out.println(p2.gender);
        }
    }

    上述代码结果:

    构造代码块运行阶段
    构造函数Person()运行阶段
    男
    构造代码块运行阶段
    构造函数Person(int age)运行阶段
    男

    构造代码块的好处的例子:

    构造函数版本:

    image

    构造代码块版本:

    image


    静态代码块:

    • 静态代码块与构造代码块不同的是,它只执行一次,用于对整个类进行初始化,通常是对类变量进行初始化处理。
    • 静态代码块中只能修改类变量。
    • 静态代码块的执行比主函数要早。
    • 有时候因为静态代码块只执行一次。所以有时候会用来“显示程序流程”。
    class Person{
        static String gender;
        int age;
        static {
            System.out.println("静态代码块执行完成");
            gender="男";//更改的变量只能是类变量
        }
        Person(){//构造函数
            System.out.println("构造函数Person()运行阶段");
        }
        Person(int age){//构造函数
            System.out.println("构造函数Person(int age)运行阶段");
            this.age=age;
        }
    }
    
    public class Demo {
    
        public static void main(String[] args) {
            Person p1=new Person();
            System.out.println(p1.gender);
            Person p2=new Person(18);
            System.out.println(p2.gender);
    
        }
    
    }

    上述代码执行结果:

    静态代码块执行完成
    构造函数Person()运行阶段
    男
    构造函数Person(int age)运行阶段
    男

    补充:

    • 各个初始化块的运行顺序:静态代码块-》构造代码块-》构造方法

  • 相关阅读:
    Python
    算法的时间复杂度和空间复杂度-总结
    列表自动滚动
    React 结合ant-mobile 省市区级联
    5G从小就梦想着自己要迎娶:高速率、低时延、大容量三个老婆
    一文读懂GaussDB(for Mongo)的计算存储分离架构
    cpu占用过高排查
    我是如何从零开始自学转行IT并进入世界500强实现薪资翻倍?
    Linux重定向用法详解
    说出来也许你不信,我被 Linux 终端嘲笑了……
  • 原文地址:https://www.cnblogs.com/progor/p/8665664.html
Copyright © 2011-2022 走看看