Cred că ai o mică neînțelegere a diferenței dintre câmpurile statice si instanta a unei clase.
Câmpurile cu modificatorul static poate fi folosit chiar dacă nu a fost creat mai mult de o instanta a unei clase (fără subiect) - și acestea sunt comune pentru toate instanțele clasei.
metode statice, respectiv, poate comunica numai cu câmpuri statice.
În constructor, aveți posibilitatea să atribuiți valori variabilelor instanței (obiect). Pentru fiecare exemplu este alocată o memorie separată în care variabilele exemplu stocate, și ele sunt diferite pentru fiecare instanță.
De asemenea, blocul de inițializare statică în cazul în care nu staticii unitate de inițializare - se efectuează înainte de proiectant, de exemplu:
Interesant, chiar ieri am folosit blocul static. Eu nu-l folosesc de multe ori, dar aici este un exemplu simplificat de codul meu să-l folosească:
După cum @zzashpaupat menționat în răspunsul său, blocurile statice sunt numite la clasa de inițializare.
bloc static este executat prima dată o clasă. Și este nevoie pentru a inițializa câmpuri statice, cum ar fi:
Astfel, OtherCls va intants-en, iar matrice va fi umplut înainte de prima referire la o clasă de Cls
Acest bloc - un bloc care este executată o singură dată, la clasa de inițializare (nume de clasă, mai degrabă decât de exemplu). De fapt, pentru acest lucru și au nevoie.
Doar recent, răspunzând la o întrebare sfătuiți să mențină un set de metode în dicționar. Acest lucru ar putea fi realizat într-o unitate statică, care urmează să fie stabilită o dată dicționarului completat. Apropo, în C #, acest lucru ar putea fi realizat prin mai multe și de colectare a initializare, dar în Java acest lucru nu pare.