构造代码块

作者: ForeverYoung20 | 来源:发表于2015-09-20 17:45 被阅读178次

    javap进行反编译


    • jdk提供了一个开发工具(jdk/bin/javap.exe)供我们进行反编译。

    javap使用格式:

    javap -c -l -private 类名
    

    各参数功能如下:


    javap.png

    构造函数


    • 当类中没有显示构造函数时,编译程序,Java编译器会自动生成一个隐式无参数构造函数,而此构造函数的权限修饰符与该类的权限修饰符相同。

    构造代码块


    • 当带参数的构造函数和不带参数的构造函数有相同的实现需求时,为了避免代码重复,可以引用构造代码块,并将构造函数要实现功能的代码写进构造代码块。

    构造代码块:

    • 构造代码块作用:给对象进行统一初始化。
    • 构造函数作用:给对应的对象进行初始化。

    构造代码块的格式:

    ...数据成员;
    {
        构造代码块
    }
    构造函数或方法...
    

    代码块的类别:

    1. 构造代码块
    2. 局部代码块--大括号位于方法之内。作用:缩短局部变量的生命周期,节省一点内存。
    3. 静态代码块

    构造代码块要注意的事项:

    1. Java编译器编译一个Java源文件时,会把成员变量的声明语句提前至一个类的最前端。
    2. 成员变量的初始化工作都在构造函数中执行。
    3. 一旦经过Java编译器编译狗,那么构造代码块的代码就会被移动到构造函数中执行,并放于构造函数代码之前,即是在构造函数之前执行的。

    例如:在一个类Demo中有如下①②③号三段代码

         1号 int i = 100;  //数据成员初始化
         2号 { i = 200; }  //构造代码块内赋值
         3号 public Demo() { i = 300;}  //构造函数对数据成员赋值
    

    无论三段代码先后顺序如何,当new出一个实例并输出该实例的i值时都为300。

    4.成员变量的显示初始化与构造代码块的是按照当前代码顺序执行的。

    当只有1号和2号代码时,按代码的前后顺序执行。后执行的值覆盖先执行的值。

    相关文章

      网友评论

        本文标题:构造代码块

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