Tôi đang xem đoạn mã bên dưới và thấy có điều gì đó hơi lạ:
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 ");
}
}
Tôi đã mong đợi điều này gây ra lỗi biên dịch vì System.out
với "y" không thuộc về khai báo phương thức chỉ a { }
. Tại sao điều này hợp lệ? Tôi không biết mã này sẽ hoặc nên được gọi như thế nào.
Khi chạy nó x y c g
cũng tạo ra , tại sao static { }
get được gọi trước hàm tạo chuỗi?