public class Father {
static Father father = new Father();
public Father() {
System.out.println("构造方法");
}
static {
System.out.println("静态代码块");
}
{
System.out.println("非静态代码块");
}
public static void main(String[] args) {
new Father();
}
}
结果:
非静态代码块
构造方法
静态代码块
非静态代码块
构造方法
静态代码块 (static block) 属于类,该类的所有实例对象 共享 它。
对同一个类来说,它的静态代码块只执行一次。
再举一个例子,加深理解。
// filename: Main.java
class Test {
static int i;
int j;
static {
i = 10;
System.out.println("static block called ");
}
Test(){
System.out.println("Constructor called");
}
}
class Main {
public static void main(String args[]) {
// 尽管有两个对象,静态代码块也只执行一次。
Test t1 = new Test();
Test t2 = new Test();
}
}
它的输出是:
static block called
Constructor called
Constructor called
题目中也是一样的情况,尽管
// 尽管有两个对象,静态代码块也只执行一次。
static Father father = new Father();
new Father();
用心回答每个问题,如果有帮助,请采纳答案好吗,谢谢~~~
静态代码块
这不是有输出么