Java >> Java tutorial >  >> Tag >> static

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);
     }
}

Java tag