class Hello12 {
static int b = 10;
static {
b = 100;
}
}
class sample {
public static void main(String args[]) {
System.out.println(Hello12.b);
}
}
Po uruchomieniu powyższego kodu wynik wynosi 100, ponieważ po wywołaniu klasy Hello blok statyczny wykonywany jest najpierw, ustawiając wartość b do 100 i wyświetlając ją. Ale gdy piszę ten kod:Klasy Java i bloki statyczne
class Hello12 {
static {
b = 100;
}
static int b = 10;
}
class sample {
public static void main(String args[]) {
System.out.println(Hello12.b);
}
}
Tutaj wyjście jest jako 10. Oczekuję odpowiedzi jako 100, ponieważ po statyczny blok jest wykonywany dała b wartość jako 100. Więc kiedy w main(), Nazwałem Hello.b powinien odnosić się do b (= 100). W jaki sposób pamięć jest przypisana do b w obu kodach?
+1. W praktyce użyj 'final'. – djechlin