Saya melihat kode di bawah ini dan menemukan sesuatu yang agak aneh:
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 ");
}
}
Saya akan mengharapkan ini untuk memberikan kesalahan kompilasi karena System.out
dengan "y" bukan milik deklarasi metode hanya a { }
. Mengapa ini valid? Saya tidak melihat bagaimana kode ini akan atau harus dipanggil.
Saat menjalankan ini, ia x y c g
juga menghasilkan , mengapa static { }
get dipanggil sebelum konstruktor urutan?