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);
}
}
Ich weiß, dass ein static
Block ausgeführt wurde, wenn die Klasse geladen wurde. In diesem Fall ist die Instanzvariable innerhalb der Klasse Mno
jedoch so final
, dass der static
Block nicht ausgeführt wird.
Warum ist das so? Und wenn ich das entfernen final
würde, würde es gut funktionieren?
Welcher Speicher wird zuerst zugewiesen, die static final
Variable oder der static
Block?
Wenn final
die Klasse aufgrund des Zugriffsmodifikators nicht geladen wird, wie kann die Variable dann Speicher erhalten?