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
* */
class Person{
String name;
int age;
static String desc = "一个人";
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Person() {
super();
}
//static代码块
static{
System.out.println("hello static block");
}
//非static代码块
{
System.out.println("hello block");
}
public void eat() {
System.out.println("吃饭");
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public static void info() {
System.out.println("static method");
}
}
public class BlockTest {
public static void main(String[] args) {
String desc = Person.desc;
Person person = new Person();
}
}