For å forstå hvordan klasser, variabler og metoder fungerer i Java, er det avgjørende å forstå forestillingene om statisk og ikke-statisk. Ikke-statiske medlemmer er knyttet til spesifikke klasseforekomster, mens statiske medlemmer er koblet til klassen. I denne delen vil vi kontrastere statiske versus ikke-statiske Java-komponenter, og fremheve deres forskjeller og potensielle applikasjoner.
Assosiert med
Statisk: Statiske medlemmer (variabler og metoder) er assosiert med selve klassen i stedet for med individuelle forekomster.
Ikke-statisk: Ikke-statiske medlemmer er spesifikke for hver forekomst av en klasse, ettersom de er knyttet til objekter opprettet fra klassen.
Minnetildeling
Statisk: Statiske medlemmer tildeles minne bare én gang, på tidspunktet for klasseinnlasting. De deles mellom alle forekomster av klassen.
Ikke-statisk: Ikke-statiske medlemmer har minne tildelt separat for hver forekomst av klassen. Hvert objekt har sin egen kopi av ikke-statiske medlemmer.
Tilgang
Statisk: Statiske medlemmer kan nås direkte ved å bruke klassenavnet etterfulgt av medlemsnavnet (f.eks. ClassName.memberName). De er tilgjengelige fra hvor som helst i programmet.
Ikke-statisk: Ikke-statiske medlemmer får tilgang ved hjelp av en objektreferanse etterfulgt av medlemsnavnet (f.eks. objectReference.memberName). De er spesifikke for en bestemt forekomst av klassen.
Initialisering
Statisk: Statiske medlemmer initialiseres når klassen lastes inn i minnet, vanligvis under programoppstart. Initialisering skjer bare én gang.
Ikke-statisk: Ikke-statiske medlemmer initialiseres når hver forekomst av klassen opprettes, vanligvis ved å bruke det nye nøkkelordet. Initialisering skjer separat for hvert objekt.
omfang
Statisk: Statiske medlemmer har et globalt omfang og kan nås fra hvor som helst i programmet, selv uten å opprette en forekomst av klassen.
Ikke-statisk: Ikke-statiske medlemmer har et lokalt omfang og kan bare nås gjennom en forekomst av klassen. De er ikke tilgjengelige uten å opprette et objekt.
xd betydning
Tilgang til medlemmer
Statisk: Statiske medlemmer kan bare få tilgang til andre statiske medlemmer innenfor samme klasse. De kan ikke få direkte tilgang til ikke-statiske medlemmer.
Ikke-statisk: Ikke-statiske medlemmer kan få tilgang til både statiske og ikke-statiske medlemmer innenfor samme klasse. De har direkte tilgang til alle medlemmer.
Bruk
Statisk: Statiske medlemmer brukes ofte for verktøymetoder, konstanter eller variabler som ikke er spesifikke for individuelle forekomster. For eksempel en matematikkklasse som inneholder matematiske funksjoner.
Ikke-statisk: Ikke-statiske medlemmer brukes for instansspesifikk oppførsel, da de inneholder data som er spesifikke for hvert objekt. For eksempel forekomstvariabler som lagrer unike verdier for hvert objekt.
Minneeffektivitet
Statisk: Statiske medlemmer bruker minne bare én gang, uavhengig av antall opprettede forekomster. De kan være minneeffektive når de samme dataene må deles på tvers av alle objekter.