代码块
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抽取成独立方法
将重复部分写成独立的方法,再在构造中调用即可
3.静态代码块
相较于构造代码块,它只会执行一次。先于构造。
格式:
应用场景:
以之前写的学生管理系统为例,用以初始化学生对象。
3.1 相较于在main方法内直接添加数据进行初始化
弊端: mian方法是可以被调用的,当main方法重复执行时,这些写在main方法内用以初始化的数据便会不断重复加载,这样会导致内存占用的增加。
建议:进行数据初始化,且只打算让其运行一次时,直接用静态代码块。
- 在mian方法内进行初始化的示例:
-
用静态代码块进行初始化的示例:
课堂小笔记区
-
IDEA中使选中内容变大写:CTRL + SHIF + U
-
static方法中只能调用static变量