Statiska variabler, även kallade globala variabler, är bitar av data som inte är kopplade till en viss instans av en klass. Endast ett värde för dessa variabler kan existera oavsett antalet klassobjekt som skapas. Beroende på sammanhanget kan statiska variabler antingen vara mer flexibla eller mer restriktiva än deras motsvarigheter till instansvariabler, som har sina egna diskreta värden för varje specifikt objekt av en klasstyp. I objektorienterade programmeringsspråk kräver god programmeringspraxis vanligtvis att användningen av statiska objekt, metoder eller variabler ska hållas till ett minimum, men de har användbara tillämpningar.
En viktig anledning till att statiska variabler ibland anses vara restriktiva är att det aldrig kan finnas mer än ett värde för en variabel. Varje tilldelning till variabeln skriver över den föregående, och all information i det föregående värdet går förlorad. Utan flera kopior av variabeln kan flera datavärden inte lagras. Om värdet ändras måste varje objekt som det påverkar fungera med det nya värdet, och om det gamla värdet inte var avsett att raderas, kan ändringen visa sig vara skadlig för varje instansobjekt av en viss klasstyp. Om inte variabeln på något sätt är låst vid skapandet, gör risken för oförutsedda förändringar och den efterföljande förödelse som den kan orsaka på objekt att vissa programmerare undviker statiska variabler när det är möjligt.
Statiska variabler kan ibland anses vara flexibla av samma anledning som de kan kallas restriktiva. Även om en variabels värde inte är låst kan planerade förändringar av dess värde ha positiva effekter. En variabel som delas mellan alla objekt i en klass är garanterat konsekvent och kan användas både inom och utanför klassen med förtroende för att dess värde alltid är detsamma. Variabler som är statiska har en mängd användbara applikationer, framför allt för underhåll av konstanter och implementering av serialisering. Java i synnerhet är starkt beroende av denna statiska serialiseringsmekanism.
Det finns vissa allmänna regler som programmerare ofta använder när de implementerar statiska variabler. Dessa variabler fungerar vanligtvis bäst som små datavärden eftersom stora statiska objekt kan göra ett program mycket stelare än det måste vara. Små datavärden kan snabbt och enkelt ändras utan alltför stor rädsla för att införa fel. Stora statiska objekt tar mer tid och ansträngning att ändra och är också mer benägna att få ett fel introducerat som skulle störa alla klassobjekt. Dessa är riktlinjer, inte okrossbara regler, och det kan finnas användningsområden för både små och stora variabler, beroende på programmet.