package block;/** 类的代码块(初始化块)
* 1.代码块作用:用来初始化类,对象
* 2.可以用static修饰后成为静态代码块
* 3.分类:静态代码块 和 非静态代码块
*
* 静态代码块:
* >随着类的加载而执行,只执行一次
* >作用:初始化类信息
* >多个静态代码块按定义顺序执行
* >不可以调用非静态结构
* 非静态代码块:
* >随着每次new对象执行
* >作用:可以在创建对象时,对对象的属性进行初始化
* >多个代码块按定义顺序执行
* >静态/非静态结构都可以调用
*
* 属性赋值顺序:
* super static field
* super static block
* static field
* static block
*
* super field
* super block
* super constructor
* field
* block
* constructor
**/
classPerson{
String name;intage;static String desc = "一个人";public Person(String name, intage) {
super();this.name =name;this.age =age;
}publicPerson() {
super();
}//static代码块
static{
System.out.println("hello static block");
}//非static代码块
{
System.out.println("hello block");
}public voideat() {
System.out.println("吃饭");
}
@OverridepublicString toString() {return "Person [name=" + name + ", age=" + age + "]";
}public static voidinfo() {
System.out.println("static method");
}
}public classBlockTest {public static voidmain(String[] args) {
String desc=Person.desc;
Person person= newPerson();
}
}