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)运行阶段
    男

    补充:

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

  • 相关阅读:
    js表单提交回调函数
    sublime text3下BracketHighlighter的配置方法
    不同版本的jquery的复选框checkbox的相关问题
    jquery键盘常见事件
    jQuery学习笔记(一)
    sublime text按esc经常进入command mode(不能输入任何东西)
    sublime text光标移入移出括号的快捷键设置
    sublime text3 自己定义的不同浏览器的预览快捷键
    grains和pillar的联合使用
    自定义模块和grains
  • 原文地址:https://www.cnblogs.com/progor/p/8665664.html
Copyright © 2011-2022 走看看