代码块(初始化块)

/*
* 类的第四个成员:初始化块(或代码块)
* 1.代码块如果有修饰的话,那么只能使用static。
* 2.分类
* 静态代码块:
* 1.里面可以有输出语句
* 2.随着列的加载而加载,而且只能被加载一次
* 3.多个静态代码块之间按照顺序结构执行
* 4.静态代码块的执行要早于非静态代码块的执行
* 5.静态的代码块中只能执行静态的结构(类属性,类方法)
* 非静态代码块:
* 1.可以对类的属性进行初始化操作
* 2.里面可以有输出语句
* 3.一个类中可以有多个静态的代码块,多个代码块之间按照顺序结构执行
* 4.每创建一个类的对象,非静态代码块就加载一次。
* 5.非静态代码块的执行要早于构造器
*
* 关于属性赋值的操作:①默认的初始化②显示地初始化或代码块初始化(此处两个结构按照顺序进行)
* ③通过方法对对象的相应属性进行修改
*/
public class TestOrder {

public static void main(String[] args) {
Order o1 = new Order();
System.out.println(o1);
System.out.println();
Order o2 = new Order();
System.out.println(o2);
}

}
class Order{
private int id;
private String name;
private static String Date;
public Order(){

}
public Order(int id, String name) {
super();
this.id = id;
this.name = name;

}
//代码块
{
id=1001;
name="AA";
System.out.println("我是代码块1");
show1();
show2();
}
{
id=1002;
name="BB";
System.out.println("我是代码块2");
}

//静态代码块
static{
System.out.println("我是静态代码块1");
// id=1001;
Date="5月16日";
// show1();
show2();
}
static{
System.out.println("我是静态代码块2");
Date="2020年5月16日";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show1(){

}
public static void show2(){

}
@Override
public String toString() {
return "Order [id=" + id + ", name=" + name +",Date="+Date+"]";
}
}

原文地址:https://www.cnblogs.com/2839888494xw/p/12901207.html