Ai có thể giải thích những gì đang xảy ra?Khối tĩnh không được gọi là
public class MagicFinal {
public static void main(String[] args) {
System.out.println(A.s);
}
}
class A {
static {
System.out.println("class has been loaded");
}
public static final String s = "final";
public static final Integer i = 3;
}
Console:
thức
nó gì? Tôi không hiểu tại sao lớp học không được tải, tôi biết các lớp luôn tải ở cuộc gọi đầu tiên. Trường s
nằm trong nhóm chuỗi, tôi thấy rằng công cụ sửa đổi cuối cùng là ma thuật. lĩnh vực tôi đã thay đổi:
Nếu tôi xóa sửa đổi lần cuối cùng (public static String s = "final"
) Tôi sẽ nhận được
Console:
lớp đã được tải
thức
Note i
: public static final int i = 3;
và hiển thị nó trong conso le. Tôi nhận được giống như trong tình huống Chuỗi. Tại sao?
Ok, cảm ơn rất nhiều !! Điều gì về int ?? public static final int i = 3; // wont write class đã được nạp số nguyên tĩnh cuối cùng công cộng i = 3; // write class đã được nạp – idmitriev
Vui lòng đọc định nghĩa biểu thức hằng số biên dịch mà tôi đã liên kết trong câu trả lời của tôi. 'int' là một giá trị nguyên thủy,' String' là trường hợp đặc biệt duy nhất của một giá trị tham chiếu có thể được tham gia vào một biểu thức liên tục và 'Integer' không phải là. –
@marko - Bạn đang nói với tôi rằng lớp A không được tải gì cả? hoặc nó là một trường hợp khởi tạo lười biếng ??? – TheLostMind