代码块
代码块
1.普通代码块
编写在顺序执行的代码流程中的代码块。
public static void main(String[] args) {
/*
* 编写在顺序执行的代码流程中的代码块
*
*/
{
int a = 1;
System.out.println(a);
}
}
2.构造代码块
/**
* 人员类
* @author 孟祥宽
*
*/
public class Person {
private String name;
private int age;
// 构造代码块
{
System.out.println("这是构造代码块");
}
// 构造方法
public Person() {
System.out.println("这是构造方法");
}
// getter setter 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void say () {
System.out.println(this.name + ":" + this.age);
}
}
/**
* 测试类
* @author 孟祥宽
*
*/
public class Test {
public static void main(String[] args) {
Person person = new Person();
}
}
运行结果:
结论:构造代码块,随着对象的每次创建,执行一次。且执行在构造方法之前。
区别:无论用户调用哪一个构造方法来创建对象,构造代码块都必然执行。
3.静态代码块
/*
* 静态代码块:随着类的加载(第一次使用),静态代码块执行,类只加载一次,所以静态代码块
* 只执行一次。
* */
static {
System.out.println("这是静态代码块执行");
}
public static void main(String[] args) {
/*
* 普通代码块:编写在顺序执行的代码流程中的代码块
*
*/
{
int a = 1;
System.out.println(a);
}
Demo1 d = new Demo1();
Demo1 d1 = new Demo1();
}
运行结果:
面试题:构造方法 与 构造代码块 以及 静态代码块的执行顺序:
答案:静态代码块 ---> 构造代码块 ---> 构造方法