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 static
khố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 Mno
là final
do static
khố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 final
biến hay static
khối?
Nếu do công cụ final
sử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ớ?