Brug af det statiske nøgleord i Java Tutorial
Det statiske nøgleord i Java bruges primært til hukommelsesstyring. Vi kan anvende statiske nøgleord med variabler, metoder, blokke og indlejrede klasser. Det statiske nøgleord tilhører klassen end en forekomst af klassen.
Reference til ikke-statisk medlem fra statisk kontekst
Statiske variabler og metoder er ikke en del af en instans. Der vil altid være en enkelt kopi af den variabel, uanset hvor mange objekter du opretter af en bestemt klasse.
For eksempel vil du måske have en uforanderlig liste over konstanter, det ville være en god idé at holde den statisk og initialisere den kun én gang i en statisk metode. Dette vil give dig en betydelig præstationsgevinst, hvis du opretter flere forekomster af en bestemt klasse på en regelmæssig basis.
Derudover kan du også have en statisk blok i en klasse. Du kan bruge den til at tildele en standardværdi til en statisk variabel. De udføres kun én gang, når klassen er indlæst i hukommelsen.
Forekomstvariabler, som navnet antyder, er afhængige af en forekomst af et bestemt objekt, de lever for at tjene dens luner. Du kan lege med dem under en bestemt livscyklus for et objekt.
Alle felter og metoder i en klasse, der bruges i en statisk metode i den klasse, skal være statiske eller lokale. Hvis du prøver at bruge instansvariabler (ikke-statiske) eller metoder, vil din kode ikke kompilere.
public class Week { static int daysOfTheWeek = 7; // static variable int dayOfTheWeek; // instance variable public static int getDaysLeftInWeek(){ return Week.daysOfTheWeek-dayOfTheWeek; // this will cause errors } public int getDaysLeftInWeek(){ return Week.daysOfTheWeek-dayOfTheWeek; // this is valid } public static int getDaysLeftInTheWeek(int today){ return Week.daysOfTheWeek-today; // this is valid } }
Brug af statisk til at erklære konstanter
Da det statiske nøgleord bruges til at få adgang til felter og metoder uden en instansieret klasse, kan det bruges til at erklære konstanter til brug i andre klasser. Disse variabler vil forblive konstante på tværs af hver instansiering af klassen. Efter konvention er statiske variabler altid ALL_CAPS og bruger understregninger i stedet for kamel-case. eks:
static E STATIC_VARIABLE_NAME
Da konstanter ikke kan ændre sig, kan statisk også bruges med den endelige modifikator:
For eksempel for at definere den matematiske konstant for pi:
public class MathUtilities { static final double PI = 3.14159265358 }
Som kan bruges i enhver klasse som en konstant, for eksempel:
public class MathCalculations { //Calculates the circumference of a circle public double calculateCircumference(double radius) { return (2 * radius * MathUtilities.PI); } }