代码块在类中声明,类似一个没有名称的方法体,它分为实例代码块和静态代码块。
1.实例代码块:在创建对象后自动执行,调用构造方法之前执行,每创建一次对象,执行一次。
{
//任何符合语法的Java代码
}
2.静态代码块:在类加载的时候执行,只执行一次,多个静态按照先后顺序执行,与是否创建对象无关。
static {
//任何符合语法的Java代码
}
类什么时候加载?
1.main方法在哪个类中执行,这个类是加载的;
2.创建某个类的对象时;
3.调用某个类中静态属性,方法时。
public class Demo {
String name;
static String country = "中国";
public Demo(){
System.out.println("无参构造");
}
{
System.out.println("实例代码块");
}
static{
System.out.println("静态代码块1");
}
static{
System.out.println("静态代码块2");
}
}
public class TestDemo {
public static void main(String[] args) {
new Demo();
new Demo();
//System.out.println(Demo.country);
// System.out.println(Demo.country);
}
}
输出结果: