En général, static
signifie "associé à la type lui-même, plutôt qu'un instance du type."
Cela signifie que vous pouvez faire référence à une variable statique sans avoir jamais créé d'instances du type, et que tout code faisant référence à la variable se réfère exactement aux mêmes données. Comparez cela avec une variable d'instance : dans ce cas, il y a une version indépendante de la variable par instance de la classe. Donc, par exemple :
Test x = new Test();
Test y = new Test();
x.instanceVariable = 10;
y.instanceVariable = 20;
System.out.println(x.instanceVariable);
imprime 10 : y.instanceVariable
et x.instanceVariable
sont séparés, car x
et y
font référence à des objets différents.
Vous peut faire référence à des membres statiques via des références, bien que ce soit une mauvaise idée de le faire. Si nous le faisions :
Test x = new Test();
Test y = new Test();
x.staticVariable = 10;
y.staticVariable = 20;
System.out.println(x.staticVariable);
alors cela donnerait 20 - il n'y a qu'une seule variable, pas une par instance. Il aurait été plus clair d'écrire ceci comme :
Test x = new Test();
Test y = new Test();
Test.staticVariable = 10;
Test.staticVariable = 20;
System.out.println(Test.staticVariable);
Cela rend le comportement beaucoup plus évident. Les IDE modernes suggèrent généralement de remplacer la deuxième liste par la troisième.
Il n'y a aucune raison d'avoir une déclaration telle que
private final int NUMBER = 10;
Si elle ne peut pas changer, il est inutile d'avoir une copie par instance.