Vad är statiska variabler?
Statiska variabler, även kallade globala variabler, är 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 vara antingen mer flexibla eller mer restriktiva än deras instansvariabla motsvarigheter, som har sina egna diskreta värden för varje specifikt objekt av en klasstyp. I objektorienterade programmeringsspråk dikterar vanligtvis god programmeringspraxis att användningen av statiska objekt, metoder eller variabler ska hållas till ett minimum, men de har användbara applikationer.
En viktig orsak till att statiska variabler ibland betraktas som restriktiva är att inte mer än ett värde någonsin kan existera 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 tänkt att raderas, kan förändringen vara skadlig för varje instansobjekt av en viss klasstyp. Såvida inte variabeln på något sätt är låst vid skapandet, orsakar risken för oförutsedd förändring och den efterföljande förödelse som den kan orsaka på föremål att vissa programmerare undviker statiska variabler när det är möjligt.
Statiska variabler kan ibland betraktas som flexibla av samma anledning till att de kan kallas restriktiva. Även om en variabelns värde inte är låst kan planerade ändringar av dess värde ha positiva effekter. En variabel som delas mellan alla objekt i en klass garanteras att vara konsekvent och kan användas både inom och utanför klassen med förtroende för att dess värde alltid är detsamma. Statiska variabler har en mängd användbara applikationer, särskilt när det gäller underhåll av konstanter och implementering av serialisering. Java förlitar sig särskilt starkt på denna statiska serieringsmekanism.
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 styvare än det måste vara. Små datavärden kan snabbt och enkelt ändras utan för mycket rädsla för att införa fel. Stora statiska objekt tar mer tid och ansträngning för att förändras och är också mer benägna att införa ett fel som skulle störa alla klassobjekt. Det här är riktlinjer, inte okrossbara regler, och det kan finnas användningar för både små och stora variabler, beroende på programmet.