1、作用:用来初始化类,对象
{
}
2、如果有修饰只能用static修饰
static {
}
3、静态代码块和非静态代码块
静态代码块:内部可以有输出语句,随着类的加载而执行,而且只执行一次
如果一个类中定义了多个静态代码块,则按声明的先后顺序执行
静态代码块的执行要优先于非静态代码块的执行
静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构
static {
System.out.println("Hello,static block");
}
public class BlockTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String desc= Person.desc;
}
}
输出:Hello,static block
非静态代码块:内部可以有输出语句 ,随着对象的创建而执行,每创建一个对象执行一次,可以在创建对象时对对象的属性进行初始化
如果一个类中定义了多个非静态代码块,则按声明的先后顺序执行
非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法
{
System.out.println("Hello");
}
public class BlockTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String desc= Person.desc;
Person p = new Person();
}
}
输出:Hello