Hvad er statiske variabler?
Statiske variabler, også kaldet globale variabler, er stykker af data, der ikke er tilknyttet et bestemt eksempel af en klasse. Der kan kun findes en værdi for disse variabler uanset antallet af klasseobjekter, der er oprettet. Afhængig af konteksten kan statiske variabler være mere fleksible eller mere restriktive end deres forekomstvariabler, der har deres egne diskrete værdier for hvert specifikt objekt af en klassetype. I objektorienterede programmeringssprog dikterer god programmeringspraksis normalt, at brugen af statiske objekter, metoder eller variabler holdes på et minimum, men de har nyttige applikationer.
En hovedårsag til, at statiske variabler til tider betragtes som restriktive, er, at der aldrig mere kan findes en værdi for en variabel. Enhver tildeling til variablen overskriver den forrige, og alle oplysninger i den forrige værdi går tabt. Uden flere kopier af variablen kan flere dataværdier ikke gemmes. Hvis værdien ændres, skal hvert objekt, det påvirker, fungere med den nye værdi, og hvis den gamle værdi ikke var beregnet til at blive slettet, kan ændringen vise sig at være skadelig for hvert instansobjekt af en bestemt klassetype. Medmindre variablen på en eller anden måde er låst ved oprettelsen, får risikoen for uventet ændring og den efterfølgende ødelæggelse, som den kunne brænde på objekter, nogle programmerere til at undgå statiske variabler, når det er muligt.
Statiske variabler kan undertiden betragtes som fleksible af samme grund, de kan kaldes restriktive. Selv hvis en variables værdi ikke er låst, kan planlagte ændringer i dens værdi have positive effekter. En variabel, der deles mellem alle objekter i en klasse, er garanteret at være konsistent og kan bruges både i og uden for klassen med tillid til, at dens værdi altid er den samme. Variabler, der er statiske, har en række nyttige applikationer, især til vedligeholdelse af konstanter og implementering af serialisering. Java er især afhængig af denne statiske serialiseringsmekanisme.
Der er visse generelle regler, som programmerere ofte bruger, mens de implementerer statiske variabler. Disse variabler fungerer normalt bedst som små dataværdier, fordi store statiske objekter kan gøre et program langt mere stift, end det skal være. Små dataværdier kan ændres hurtigt og nemt uden for meget frygt for at indføre fejl. Store statiske objekter tager mere tid og kræfter på at ændre og er også mere tilbøjelige til at få introduceret en fejl, der vil forstyrre alle klasseobjekter. Dette er retningslinjer, ikke uknuselige regler, og der kan være anvendelser til både små og store variabler, afhængigt af programmet.