ฉันดูโค้ดด้านล่างและพบว่ามีบางอย่างแปลก ๆ :
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 ");
}
}
ฉันคาดว่าสิ่งนี้จะทำให้เกิดข้อผิดพลาดในการคอมไพล์เนื่องจากSystem.out
"y" ไม่ได้เป็นของการประกาศวิธีการเพียงแค่ a { }
. เหตุใดจึงใช้ได้ ฉันไม่เห็นว่ารหัสนี้จะเรียกว่าอย่างไร
เมื่อเรียกใช้สิ่งนี้จะสร้างขึ้นx y c g
ด้วยเหตุใดจึงถูกstatic { }
เรียกก่อนตัวสร้างลำดับ