logo

Forskjellen mellom statisk og ikke-statisk i Java

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.