代码块的作用:用来初始化类或者对象
代码块如果有修饰,只能使用static
分类:静态代码块 vs 非静态代码块
内部都可以有输出语句
1.默认初始化
2.显示初始化 / 在代码块中赋值
3.构造器中初始化
4.有了对象以后,对对象.属性或者对象.方法的方式进行赋值
执行先后顺序 1 - 2 - 3 - 4
2中的还谁先写谁后写
同样的,静态代码块内只能调静态属性或者方法,代码块内静态和非静态都能调用
package block;
public class blockTest {
public static void main(String[] args) {
String desc = Person.desc;
Person p1 = new Person();
Person p2 = new Person();
System.out.println(p1.age);
}
}
class Person{
// 属性
String name;
int age;
static String desc = “我是一个人”;
// 构造器
public Person(){
}
public Person(String name,int age){
this.name = name;
this.age = age;
}
// 静态代码块
static{
System.out.println("hello,static block");
}
// 非静态代码块
{
System.out.println("hello,block");
age = 1;
}
// 方法
public void eat(){
System.out.println("吃饭");
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
public static void info(){
System.out.println("我是一个快乐的人");
}
}