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
पहुंच संशोधक के कारण कक्षा लोड नहीं होती है, तो चर को मेमोरी कैसे मिल सकती है?