代码块

1.局部代码块

虽然老师在课上以设备升级为由说其淘汰,但作为深受内存杀手伤害的普通人,我觉得应该把这个技术继续好好用下去。优化代码,使更多的设备能够流畅运行,而不是做毒瘤。

写在方法里面的单独大括号。

功能:提前结束变量的生命周期,用完立马回收,节约内存空间。

public class CodeBlockDemo {  
    {  
        int a = 10;  
    }//因为当前代码执行到这里时,变量a就从内存中消失了  
    System.out.println(a);//报错  
}

2.构造代码块(真·淘汰)

  • 写在成员位置的代码块

  • 作用:可以把构造方法中的重复的代码抽取出来

  • 执行时机:在创建本类对象的时候会先执行构造代码块再执行构造方法。

  • 缺点:不够灵活,没法自由决定是否让其在调用方法时不执行。

示例构造方法

public class User {  
    private String name;  
    private int age;  
    {//构造代码块:每次调用构造时都会执行一次  
        System.out.println("构造代码块");  
    }  
    public User() {  
        System.out.println("调用空参构造了");  
    }  
​  
    public User(String name, int age) {  
        System.out.println("调用含参构造了");  
        this.name = name;  
        this.age = age;  
    }  
//省略get和set  
}

创建对象时的返回值

User u = new User();  
User s = new User("liming",18);  
//返回值  
/*  
构造代码块  
调用空参构造了  
构造代码块  
调用含参构造了  
*/

2.1 替代方案

2.1.1用this关键字

用this关键字调用另一构造,以使用重复代码

2.1.2抽取成独立方法

将重复部分写成独立的方法,再在构造中调用即可

image-20231119214908679

3.静态代码块

相较于构造代码块,它只会执行一次。先于构造。

格式:

应用场景:

以之前写的学生管理系统为例,用以初始化学生对象。

image-20231119220138294

3.1 相较于在main方法内直接添加数据进行初始化

弊端: mian方法是可以被调用的,当main方法重复执行时,这些写在main方法内用以初始化的数据便会不断重复加载,这样会导致内存占用的增加。

建议:进行数据初始化,且只打算让其运行一次时,直接用静态代码块

  • 在mian方法内进行初始化的示例:

image-20231119221746964

  • 用静态代码块进行初始化的示例:

    image-20231119222000548

课堂小笔记区

  • IDEA中使选中内容变大写:CTRL + SHIF + U

  • static方法中只能调用static变量

最后修改:2023 年 11 月 20 日
如果觉得我的文章对你有用,请随意赞赏