Quote Originariamente inviata da andbin Visualizza il messaggio
Un membro static "appartiene" alla classe, non distintamente a ciascun oggetto di quella classe. Quindi un membro static è "unico", ce n'è solamente UNO.


P.S.
Per essere completamente accurati, bisognerebbe fare una precisazione un po "pignola" ma non vorrei confonderti di più le idee. La definizione di una classe è unica ma ... per classloader. Il classloader è l'entità che materialmente "carica" una classe e la rende disponibile alla JVM. Quindi se una classe X ha un static int z; e questa classe fosse caricata da due classloader distinti, in effetti ci sarebbero due definizioni di X distinte, ciascuna con il suo campo statico z.
Quindi in una situazione del genere
codice:
public class Prova
{
    static int prova;

    public static void esempio
    {
         if ( prova == valoreDefault )
             prova = generaNumeroIntero();
         else stampa("Ciao");
    }
}
se io andassi ad instanziare oggetti Prova anche in programmi del tutto sconnessi tra loro, soltanto il primo che richiama il metodo esempio assegna il valore alla variabile prova, mentre tutti gli altri stampano "Ciao"?