class Hello12 {
static int b = 10;
static {
b = 100;
}
}
class sample {
public static void main(String args[]) {
System.out.println(Hello12.b);
}
}
In esecuzione sopra il codice l'output arriva come 100 perché quando ho chiamato classe Hello, il blocco statico viene eseguito prima impostando il valore di b su 100 e visualizzandolo. Ma quando scrivo questo codice:classi Java e blocchi statici
class Hello12 {
static {
b = 100;
}
static int b = 10;
}
class sample {
public static void main(String args[]) {
System.out.println(Hello12.b);
}
}
Qui l'uscita viene come 10. Mi aspetto risposta come 100 perché dopo l'esecuzione del blocco statico dava b il valore 100. così quando in main(), Ho chiamato Hello.b che avrebbe dovuto fare riferimento a b (= 100). In che modo la memoria è assegnata a b in entrambi i codici?
+1. In pratica, usa 'final'. – djechlin