For at forstå, hvordan klasser, variabler og metoder fungerer i Java, er det afgørende at forstå begreberne statisk og ikke-statisk. Ikke-statiske medlemmer er knyttet til specifikke klasseforekomster, hvorimod statiske medlemmer er forbundet til klassen. I dette afsnit vil vi kontrastere statiske versus ikke-statiske Java-komponenter og fremhæve deres forskelle og potentielle applikationer.
Forbundet med
Statisk: Statiske medlemmer (variabler og metoder) er forbundet med selve klassen i stedet for med individuelle forekomster.
Ikke-statisk: Ikke-statiske medlemmer er specifikke for hver forekomst af en klasse, da de er bundet til objekter, der er oprettet fra klassen.
Hukommelsestildeling
Statisk: Statiske medlemmer tildeles kun hukommelse én gang på tidspunktet for klassens indlæsning. De deles mellem alle forekomster af klassen.
Ikke-statisk: Ikke-statiske medlemmer har hukommelse tildelt separat for hver forekomst af klassen. Hvert objekt har sin egen kopi af ikke-statiske medlemmer.
Adgang
Statisk: Statiske medlemmer kan tilgås direkte ved at bruge klassenavnet efterfulgt af medlemsnavnet (f.eks. ClassName.memberName). De er tilgængelige fra hvor som helst i programmet.
Ikke-statisk: Tilgås ikke-statiske medlemmer ved hjælp af en objektreference efterfulgt af medlemsnavnet (f.eks. objectReference.memberName). De er specifikke for en bestemt forekomst af klassen.
Initialisering
Statisk: Statiske medlemmer initialiseres, når klassen indlæses i hukommelsen, typisk under programstart. Initialisering sker kun én gang.
Ikke-statisk: Ikke-statiske medlemmer initialiseres, når hver forekomst af klassen oprettes, normalt ved hjælp af det nye nøgleord. Initialisering sker separat for hvert objekt.
Omfang
Statisk: Statiske medlemmer har et globalt omfang og kan tilgås fra hvor som helst i programmet, selv uden at oprette en forekomst af klassen.
Ikke-statisk: Ikke-statiske medlemmer har et lokalt omfang og kan kun tilgås gennem en forekomst af klassen. De er ikke tilgængelige uden at oprette et objekt.
xd betydning
Adgang til medlemmer
Statisk: Statiske medlemmer kan kun få adgang til andre statiske medlemmer inden for samme klasse. De kan ikke få direkte adgang til ikke-statiske medlemmer.
Ikke-statisk: Ikke-statiske medlemmer kan få adgang til både statiske og ikke-statiske medlemmer inden for samme klasse. De har direkte adgang til alle medlemmer.
Brug
Statisk: Statiske medlemmer bruges almindeligvis til hjælpemetoder, konstanter eller variabler, der ikke er specifikke for individuelle forekomster. For eksempel en matematikklasse, der indeholder matematiske funktioner.
Ikke-statisk: Ikke-statiske medlemmer bruges til instansspecifik adfærd, da de indeholder data, der er specifikke for hvert objekt. For eksempel instansvariabler, der gemmer unikke værdier for hvert objekt.
Hukommelseseffektivitet
Statisk: Statiske medlemmer bruger kun hukommelse én gang, uanset antallet af oprettede forekomster. De kan være hukommelseseffektive, når de samme data skal deles på tværs af alle objekter.