Hva er forskjellen mellom endelig og statisk i Java?


Beste svaret

Uh, de er helt forskjellige konsepter.

Et medlem merket statisk tilhører klassen, snarere enn til en bestemt forekomst. Noen ganger kan det hende at klasser bare har statiske medlemmer, med et åpenbart eksempel på java.lang.Double-klassen som «bokser» doble primitiver: du kan få verdien av en individuell dobbel gjennom en forekomstmetode (myDouble.doubleValue()) men få «universelle» ting gjennom statiske medlemmer (Double.MAX\_VALUE).

Et medlem som er merket som endelig kan ikke * ha sin verdi (som er verdien hvis den er primitiv, eller hvis referanse hvis objektet) endres når den ble initialisert. Det kan hende du fremdeles kan endre -egenskapene til et objekt (det kan være mutable ) men du kunne ikke * erstatte objektet med et annet. (* Du kan teknisk «jukse» med refleksjon, bytecode-manipulering eller andre måter å «bryte reglene», men hvis du gjør disse, antar du du re «juks».)

Svar

Å vite når du skal bruke

private static final X x;

Du bør vite hva er bruken av disse nøkkelordene.

La oss se

  1. private – Det brukes når du vil begrense et visst medlem av en klasse til ikke være tilgjengelig utenfor den klassen.
  2. statisk – Når du erklærer et medlem statisk, er det knyttet til klassen og ikke objekt. For å forenkle det, vil det statiske medlemmet initialiseres når klassen lastes inn. Så når du oppdaterer verdien til det medlemmet, vil alle stedene der det er referert til også bli oppdatert. Derfor får du tilgang til statisk medlem med klassenavn og ikke objektene deres som verdien av medlemmet vil være det samme uansett objekter.
  3. final – Dette nøkkelordet definerer at når klassen er lastet og verdien er tildelt, kan den ikke endres når den brukes sammen med medlemsvariabler.

Så la oss se hva som skjer når du erklærer en variabel som nedenfor:

private static final String PRIVATE\_STATIC\_FINAL\_STRING = "String";

Nå,

PRIVATE\_STATIC\_FINAL\_STRING er definert som privat, så den vant «t være tilgjengelig utenfor den» erklærer klasse. Den er også definert som statisk, så verdien av den forblir den samme uavhengig av dens klasseobjekter. Og den er definert som endelig, så når klassen er lastet inn, vil ikke verdien endres.

Derfor vil PRIVATE\_STATIC\_FINAL\_STRING fungere som en umodifiserbar klassenivåstreng som ikke vil være tilgjengelig utenfor den som deklarerer klasse.

Jeg håper dette hjelper deg med å fjerne tvilen. du kan nå ut til meg og jeg vil prøve å hjelpe deg så mye jeg kan.

Lykke til og glad læring!

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *