Les variables statiques, également appelées variables globales, sont des données qui ne sont pas affiliés à une instance particulière d'une classe. Une seule valeur de ces variables peut exister quel que soit le nombre d'objets de classe qui sont créés. Selon le contexte, les variables statiques peuvent être soit plus souples ou plus restrictives que leurs homologues des variables d'instance, qui ont leurs propres valeurs discrètes pour chaque objet spécifique d'un type de classe. Dans les langages de programmation orientés objet, bonne pratique de programmation indique généralement que l'utilisation d'objets statiques, des méthodes ou des variables sont réduites au minimum, mais ils ont des applications utiles.
Une des principales raisons que les variables statiques sont considérés comme une entrave à la fois parce que pas plus d'une valeur ne peut jamais exister pour une variable. Toute affectation à la variable écrase la précédente, et toute autre information dans la valeur précédente est perdue. Sans des copies multiples des données variables, multiples valeurs ne peuvent pas être stockés. Si la valeur est modifiée, tous les objets qu'il touche doit fonctionner avec la nouvelle valeur, et si l'ancienne valeur ne devait pas être supprimé, le changement pourrait se révéler nuisible pour chaque objet instance d'un type classe particulière. Sauf si la variable est en quelque sorte enfermé à la création, le risque de changement imprévu et les ravages ultérieurs, il pourrait faire des objets provoque sur certains programmeurs afin d'éviter les variables statiques dans la mesure du possible.
Les variables statiques peuvent parfois être considérée comme souple pour la même raison qu'ils peuvent être appelés restrictive. Même si la valeur d'une variable n'est pas verrouillée, les changements prévus à sa valeur peut avoir des effets positifs. Une variable qui est partagée entre tous les objets d'une classe est garanti d'être cohérent et peut être utilisé tant à l'intérieur qu'à l'extérieur de la classe avec confiance que sa valeur est toujours la même. Les variables qui sont statiques ont une variété d'applications utiles, notamment dans le maintien de constantes et de mise en œuvre de la sérialisation. Java en particulier repose en grande partie sur ce mécanisme de sérialisation statique.
Il existe certaines règles générales qui programmeurs utilisent souvent en mettant en œuvre les variables statiques. Ces variables travaillent généralement mieux que les valeurs de données de petites parce que les gros objets statiques peuvent faire un programme beaucoup plus rigide que ça doit être. Les petites valeurs de données peuvent être rapidement et facilement changées sans trop de crainte d'erreurs introduction. Les grands objets statiques prennent plus de temps et d'efforts pour changer et sont aussi plus enclins à avoir introduit une erreur qui pourrait perturber l'ensemble des objets de classe. Ce sont des lignes directrices et non des règles incassables, et il peut y avoir des utilisations pour les variables de petites et grandes, en fonction du programme.