这节课我们来学习块、静态块、对象的初始化
什么叫块?
被一对大括号{}包住的包括大括号这一部分就叫一个块
什么叫静态块?
被static修饰的块
先看Demo:
public class BlockAndObjectInitialTeach {
public int a;
public static int s;
static {
System.out.println("静态块");
s = 1;
}
{
System.out.println("普通块");
s = 2;
a = 1;
}
public BlockAndObjectInitialTeach()
{
System.out.println("构造器");
s = 3;
a = 5;
}
public static void main(String[] args) {
BlockAndObjectInitialTeach obj = new BlockAndObjectInitialTeach();
System.out.println(obj.a);
System.out.println(obj.s);
}
}
运行结果:
静态块
普通块
构造器
5
3
结论:
对象的初始化顺序:
先执行静态块
然后执行普通块
最后执行构造器
说明:
静态块只会在该类的第一个对象被创建是执行一次,且只会执行一次
静态块内无法访问非静态成员
静态块内可以调用静态方法
非静态快内可以访问属性和方法(不管是静态的还是非静态的)