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);
}
}
ฉันรู้ว่าstatic
บล็อกทำงานเมื่อโหลดคลาส แต่ในกรณีนี้ตัวแปรอินสแตนซ์ภายในคลาสMno
คือfinal
เนื่องจากว่าstatic
บล็อกไม่ทำงาน
เหตุผลที่เป็นเช่นนั้น? แล้วถ้าจะเอาออกfinal
มันจะใช้ได้ไหม
หน่วยความจำใดจะถูกจัดสรรก่อนstatic final
ตัวแปรหรือstatic
บล็อก?
หากเนื่องจากfinal
ตัวแก้ไขการเข้าถึงคลาสไม่ได้รับการโหลดตัวแปรจะรับหน่วยความจำได้อย่างไร?