静态代码块在第一次创建对象的时候执行一次,之后再也不执行。 非静态代码块每创建一次对象就执行一次。
class Cat{
Cat(){
System.out.println("构造代码块");
}
static{
System.out.println("静态代码块");
}
{
System.out.println("非静态代码块");
}
}
public class TestStatic{
public static void main(String[] args) {
new Cat();
System.out.println("==========分隔符================");
new Cat();
}
}
执行结果
静态代码块 非静态代码块 构造代码块 ==========分隔符================ 非静态代码块 构造代码块
当调用一个类里面的静态方法的时候,静态代码块也会执行 例子
class Cat {
Cat() {
System.out.println("构造代码块");
}
static void f() {
System.out.println("测试静态代码块会不会执行");
}
static {
System.out.println("静态代码块");
}
{
System.out.println("非静态代码块");
}
}
public class TestStatic {
public static void main(String[] args) {
Cat.f();
}
}
执行结果 静态代码块 测试静态代码块会不会执行
注意程序的唯一入口main方法也是静态方法 它同样也遵循静态方法的规则,所以它由系统在创建对象之前就调用.