Hvad er forskellen mellem endelig og statisk i Java?


Bedste svar

Uh, de er helt forskellige begreber.

Et medlem markeret statisk hører til klassen snarere end til et bestemt tilfælde. Nogle gange kan klasser muligvis kun have statiske medlemmer, hvor et indlysende eksempel er java.lang.Double-klassen, der “bokser” dobbelt primitiver: du kan få værdien af ​​en individuel dobbelt gennem en instansmetode (myDouble.doubleValue()) men få “universelle” ting gennem statiske medlemmer (Double.MAX\_VALUE).

Et medlem, der er markeret som endelig, kan ikke * have sin værdi (som er dens værdi hvis den er primitiv, eller dens reference hvis objekt) ændres, når den initialiseres. Du kan muligvis stadig ændre egenskaber for et objekt (det kan være kan ændres ) men du kunne ikke * erstatte objektet med et andet. (* Du kan teknisk “snyde” med refleksion, bytecode-manipulation eller andre måder at “bryde reglerne”, men hvis du gør dem, skal du formodentlig kende dig re “snyd”.)

Svar

At vide, hvornår man skal bruge

private static final X x;

Du bør vide, hvad brugen af ​​disse nøgleord er.

Lad os se

  1. privat – Det bruges, når du vil begrænse visse medlemmer af en klasse til ikke være tilgængelig uden for denne klasse.
  2. statisk – Når du erklærer et medlem statisk, er det knyttet til dets klasse og ikke objekt. For at forenkle det initialiseres det statiske medlem, når klassen indlæses. Så når du opdaterer værdien for det medlem, opdateres alle de steder, hvor det henvises, også. Derfor får man adgang til det statiske medlem efter klassenavn og ikke deres objekter som værdi af medlem forbliver den samme uanset objekter.
  3. final – Dette nøgleord definerer, når det bruges sammen med medlemsvariabler, at når klassen er indlæst og værdien er tildelt, kan den ikke ændres.

Så lad os se, hvad der sker når du erklærer en variabel som nedenfor:

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

Nu,

PRIVATE\_STATIC\_FINAL\_STRING er defineret privat, så den vandt “t være tilgængelig uden for det”, der erklærer klasse. Den er også defineret som statisk, så værdien af ​​den forbliver den samme, uanset dens klassens objekter. Og den er defineret som endelig, så når klassen er indlæst, ændres dens værdi ikke.

Derfor vil PRIVATE\_STATIC\_FINAL\_STRING fungere som en umodificerbar klasseniveaustreng, der ikke er tilgængelig uden for den, der erklærer klasse.

Jeg håber, dette hjælper dig med at fjerne din tvivl. Hvis du har brug for yderligere hjælp, du kan nå ud til mig, og jeg vil prøve at hjælpe dig så meget jeg kan.

Held og lykke og læring!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *