Statisk Java-nøkkelord (med eksempler)

I denne opplæringen vil vi lære om Java statiske nøkkelord sammen med statiske metoder, statiske variabler og statiske blokker ved hjelp av eksempler.

Hva er et statisk nøkkelord i Java?

I Java, hvis vi vil ha tilgang til klassemedlemmer, må vi først opprette en forekomst av klassen. Men det vil være situasjoner der vi ønsker å få tilgang til klassemedlemmer uten å lage noen variabler.

I slike situasjoner kan vi bruke staticnøkkelordet i Java. Hvis vi ønsker å få tilgang til klassemedlemmer uten å opprette en forekomst av klassen, må vi erklære klassemedlemmene statisk.

Den Mathklassen i Java har nesten alle sine medlemmer statisk. Så vi kan få tilgang til medlemmene uten å lage forekomster av matematikk-klassen. For eksempel,

 public class Main ( public static void main( String() args ) ( // accessing the methods of the Math class System.out.println("Absolute value of -12 = " + Math.abs(-12)); System.out.println("Value of PI = " + Math.PI); System.out.println("Value of E = " + Math.E); System.out.println("2^2 = " + Math.pow(2,2)); ) )

Utgang :

 Absolutt verdi av -12 = 12 Verdi av PI = 3,141592653589793 Verdi av E = 2,718281828459045 2 2 = 4,0

I eksemplet ovenfor har vi ikke opprettet noen forekomster av Mathklassen. Men vi har tilgang til metodene: abs()og pow()og variabler: PIog E.

Det er mulig fordi metodene og variablene i Mathklassen er statiske.

Statiske metoder

Statiske metoder kalles også klassemetoder. Det er fordi en statisk metode tilhører klassen i stedet for objektet til en klasse.

Og vi kan påberope statiske metoder direkte ved hjelp av kursnavnet. For eksempel,

 class Test ( // static method inside the Test class public static void method() (… ) ) class Main ( // invoking the static method Test.method(); )

Her kan vi se at den statiske metoden kan nås direkte fra andre klasser ved hjelp av klassenavnet.

I hvert Java-program har vi erklært mainmetoden static. Det er fordi for å kjøre programmet, skal JVM kunne påberope seg hovedmetoden i den innledende fasen der ingen objekter eksisterer i minnet.

Eksempel 1: Java statiske og ikke-statiske metoder

 class StaticTest ( // non-static method int multiply(int a, int b)( return a * b; ) // static method static int add(int a, int b)( return a + b; ) ) public class Main ( public static void main( String() args ) ( // create an instance of the StaticTest class StaticTest st = new StaticTest(); // call the nonstatic method System.out.println(" 2 * 2 = " + st.multiply(2,2)); // call the static method System.out.println(" 2 + 3 = " + StaticTest.add(2,3)); ) )

Utgang :

 2 * 2 = 4 2 + 3 = 5

I det ovennevnte programmet har vi erklært en ikke-statisk metode navngitt multiply()og en statisk metode navngitt add()i klassen StaticTest.

Inne i hovedklassen kan vi se at vi kaller den ikke-statiske metoden ved hjelp av objektet til klassen ( st.multiply(2, 2)). Imidlertid kaller vi den statiske metoden ved å bruke klassenavnet ( StaticTest.add(2, 3)).

Statiske variabler

Når vi oppretter objekter i en klasse i Java, vil hvert objekt ha sin egen kopi av alle variablene i klassen. For eksempel,

 class Test ( // regular variable int age; ) class Main ( // create instances of Test Test test1 = new Test(); Test test2 = new Test(); )

Her vil både objektene test1 og test2 ha separate kopier av variabel alder. Og de er forskjellige fra hverandre.

Men hvis vi erklærer en variabel statisk, deler alle objekter i klassen den samme statiske variabelen. Det er fordi som statiske metoder, også statiske variabler er knyttet til klassen. Og vi trenger ikke å lage objekter i klassen for å få tilgang til de statiske variablene. For eksempel,

 class Test ( // static variable static int age; ) class Main ( // access the static variable Test.age = 20; )

Her kan vi se at vi får tilgang til den statiske variabelen fra den andre klassen ved hjelp av klassenavnet.

Eksempel 2: Java statiske og ikke-statiske variabler

 class Test ( // static variable static int max = 10; // non-static variable int min = 5; ) public class Main ( public static void main(String() args) ( Test obj = new Test(); // access the non-static variable System.out.println("min + 1 = " + (obj.min + 1)); // access the static variable System.out.println("max + 1 = " + (Test.max + 1)); ) )

Utgang :

 min + 1 = 6 maks + 1 = 11

I det ovennevnte programmet har vi erklært en ikke-statisk variabel med navnet min og en statisk variabel med navnet max i klassen Test.

Inne i hovedklassen kan vi se at vi kaller den ikke-statiske variabelen ved å bruke objektet til klassen ( obj.min + 1). Imidlertid kaller vi den statiske variabelen ved å bruke klassenavnet ( Test.max + 1).

Merk : Statiske variabler brukes sjelden i Java. I stedet brukes de statiske konstantene. Disse statiske konstantene er definert av static finalnøkkelord og representert med store bokstaver. Dette er grunnen til at noen foretrekker å bruke store bokstaver også for statiske variabler.

Få tilgang til statiske variabler og metoder i klassen

Vi får tilgang til den statiske variabelen fra en annen klasse. Derfor har vi brukt kursnavnet for å få tilgang til det. Imidlertid, hvis vi vil ha tilgang til det statiske medlemmet fra innsiden av klassen, kan du få tilgang til det direkte. For eksempel,

 public class Main ( // static variable static int age; // static method static void display() ( System.out.println("Static Method"); ) public static void main(String() args) ( // access the static variable age = 30; System.out.println("Age is " + age); // access the static method display(); ) )

Utgang :

 Alder er 30 Statisk metode

Her har vi tilgang til den statiske variabelen og metoden direkte uten å bruke klassenavnet. Det er fordi statiske variabler og metoder som standard er offentlige. Og siden vi får tilgang fra samme klasse, trenger vi ikke å spesifisere klassens navn.

Statiske blokker

I Java brukes statiske blokker for å initialisere de statiske variablene. For eksempel,

 class Test ( // static variable static int age; // static block static ( age = 23; ) )

Her kan vi se at vi har brukt en statisk blokk med syntaksen:

 static ( // variable initialization )

The static block is executed only once when the class is loaded in memory. The class is loaded if either the object of the class is requested in code or the static members are requested in code.

A class can have multiple static blocks and each static block is executed in the same sequence in which they have been written in a program.

Example 3: Use of static block in java

 class Main ( // static variables static int a = 23; static int b; static int max; // static blocks static ( System.out.println("First Static block."); b = a * 4; ) static ( System.out.println("Second Static block."); max = 30; ) // static method static void display() ( System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("max = " + max); ) public static void main(String args()) ( // calling the static method display(); ) )

Output:

 First Static block. Second Static block. a = 23 b = 92 max = 30

In the above program. as soon as the Main class is loaded,

  • The value of a is set to 23.
  • The first static block is executed. Hence, the string First Static block is printed and the value of b is set to a * 4.
  • The second static block is executed. Hence, the string Second Static block is printed and the value of max is set to 30.
  • Og til slutt blir utskriftsuttalelsene i metoden display()utført.

Nestet statisk klasse

I Java kan vi erklære en klasse i en annen klasse. Slike klasser er kjent som nestede klasser. Nestede klasser er av to typer:

  • Statisk nestede klasser
  • Ikke-statiske nestede klasser

For eksempel,

 class OuterClass ( // static nested class static class NestedClass (… ) // non-static nested class class InnerClass (… ) )

For å lære mer, besøk Java Nested Class.

Interessante artikler...