Dlaczego to się kompiluje. Błąd w Java?

0

Znalazłem coś dziwnego w Javie.

class bug {
    static int x = 11;
    static {
        y=44;
        x = 0;
    }
    static int y = 10;
    
    public static void main(String[] args) {
        System.out.println(y);
        System.out.println(x);
    }
}

Ten kod nie powienien się skompilować bo linia z y=44 się nie wykonuje . Jednak kod się kompiluje.

0

to ze linia nie ma zadnego efektu nie jest zwykle wystarczajace do bledu kompilacji, ciezko zeby kompilator wykrywal wiekszosc takie przypadki.
wez pod uwage ze kolejnosc inicjalizacji pol statycznych jest scisle okreslona oraz to ze mozesz i powinienes robic to raz i tez uzyc slowka final.

2

Ale przecież ta linia się wykonuje. Możesz to sprawdzić dodając metodę, w której wyświetlisz sobie przekazywaną wartość i zwrócisz ją do zmiennej, a przy okazji dowiesz się dlaczego dostajesz takie wyniki :).

1 użytkowników online, w tym zalogowanych: 0, gości: 1