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);
}
}
Tôi biết rằng một statickhối được thực thi khi lớp được tải. Nhưng trong trường hợp này, biến thể hiện bên trong lớp Mnolà finaldo statickhối không thực thi.
Tại sao lại như vậy? Và nếu tôi xóa final, nó có hoạt động tốt không?
Bộ nhớ nào sẽ được cấp phát đầu tiên, static finalbiến hay statickhối?
Nếu do công cụ finalsửa đổi truy cập mà lớp không được tải, thì làm thế nào để biến có thể nhận được bộ nhớ?