class Test {
public static void main(String arg[]) {
System.out.println("**MAIN METHOD");
System.out.println(Mno.VAL); // SOP(9090);
System.out.println(Mno.VAL + 100); // SOP(9190);
}
}
class Mno {
final static int VAL = 9090;
static {
System.out.println("**STATIC BLOCK OF Mno\t: " + VAL);
}
}
Saya tahu bahwa staticblok dieksekusi ketika kelas dimuat. Tetapi dalam hal ini variabel instan di dalam kelas Mnoadalah final, karena itu staticblok tidak dieksekusi.
Mengapa demikian? Dan jika saya akan menghapusnya final, apakah itu akan berfungsi dengan baik?
Memori mana yang akan dialokasikan terlebih dahulu, static finalvariabel atau staticblok?
Jika karena finalpengubah akses kelas tidak dimuat, lalu bagaimana variabel mendapatkan memori?