方法执行的顺序是什么?
What order are methods executed?
所以我有这段代码,产生的输出是 xycg...但是如何呢?谁能解释一下这是怎么回事。
public class Sequence {
Sequence() {
System.out.print("c");
} {
System.out.print("y");
}
public static void main(String[] args) {
new Sequence().go();
}
void go() {
System.out.print("g");
}
static {
System.out.print("x");
}
}
我什至不明白怎么写
static{
System.out.print("x");
}
这个也可以解释一下吗
还有写system.out.print("y")的位,怎么写在它自己的block里,不在sequence constructor里?
首次加载 class 时执行静态块。
非静态初始化块在构造函数之前执行。
在调用实例上的非静态方法之前先执行构造函数。
这实际上是一个非常好的演示此顺序的最小代码示例。
所以我有这段代码,产生的输出是 xycg...但是如何呢?谁能解释一下这是怎么回事。
public class Sequence {
Sequence() {
System.out.print("c");
} {
System.out.print("y");
}
public static void main(String[] args) {
new Sequence().go();
}
void go() {
System.out.print("g");
}
static {
System.out.print("x");
}
}
我什至不明白怎么写
static{
System.out.print("x");
}
这个也可以解释一下吗
还有写system.out.print("y")的位,怎么写在它自己的block里,不在sequence constructor里?
首次加载 class 时执行静态块。
非静态初始化块在构造函数之前执行。
在调用实例上的非静态方法之前先执行构造函数。
这实际上是一个非常好的演示此顺序的最小代码示例。