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: " + VAL);
}
}
I know that a static
block executed when class loaded. But in this case the instance variable inside class Mno
is final
, because of that the static
block is not executing.
Why is that so? And if I would remove the final
, would it work fine?
Which memory will be allocated first, the static final
variable or the static
block?
If due to the final
access modifier the class does not get loaded, then how can the variable get memory?