持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情
代码块
构造代码块
-
构造代码块:
- 位置:定义在成员位置的代码块{}
- 执行:每次创建对象都会执行构造代码块
- 作用:一般是一个类的多个构造方法重复的代码放到构造代码块中
- 使用场景:
举例:统计当前类一共创建了几个对象
public class Teacher {
String name;
int age;
//定义计数器
static int count = 0;
//构造代码块
//构造代码块会在构造方法之前执行,并且每次执行构造方法都会先执行构造代码块
{
System.out.println("构造代码块");
//统计
count++;
}
//无参构造
public Teacher(){
System.out.println("构造方法");
}
//有参构造
public Teacher(String name, int age){
this.name = name;
this.age = age;
}
}
public class Demo02 {
public static void main(String[] args) {
//创建对象
Teacher t1 = new Teacher();
Teacher t2 = new Teacher();
Teacher t3 = new Teacher("柳岩",35);
System.out.println("一共创建过" + Teacher.count +"次");
}
}
静态代码块(掌握)
-
静态代码块:
-
格式:
//静态代码块 static{ } -
位置:定义在成员位置,类中方法外。
-
执行:在当前类第一次被使用时,静态代码块会执行。并且静态代码块只会执行一次。
-
使用场景:比如我们加载驱动(驱动需要在第一次使用前加载,只需要加载一次),这种功能就可以放在静态代码块中。
-
格式:
public class Person {
private String name;
private int age;
//静态代码块
static{
System.out.println("静态代码块执行了");
}
}
局部代码块
- 格式:
定义在方法中:
//局部代码块
{
}
public class Demo03 {
public static void main(String[] args) {
int a = 10;
//局部代码块
//局部代码块的作用就是限制变量的作用域
{
int b = 20;
}
//int a = 30; //在同一个区域不能定义重名变量
//不报错,因为作用域不同
int b = 40;
}
}
执行顺序演示
public class AAA {
//静态代码块
//静态代码块只会执行一次 并在最开始第一个执行
static{
System.out.println(2);
}
//构造代码块
//在每次执行构造方法之前先执行构造代码块
{
System.out.println(3);
}
//构造方法
public AAA() {
System.out.println(1);
}
}
public class Demo04{
public static void main(String[] args) {
//创建对象
AAA a1 = new AAA();
AAA a2 = new AAA();
}
}
执行结果: 2 3 1 3 1