Statisk Java-nøgleord (med eksempler)

I denne vejledning lærer vi om det statiske Java-nøgleord sammen med statiske metoder, statiske variabler og statiske blokke ved hjælp af eksempler.

Hvad er et statisk nøgleord i Java?

Hvis vi i Java ønsker at få adgang til klassemedlemmer, skal vi først oprette en forekomst af klassen. Men der vil være situationer, hvor vi vil have adgang til klassemedlemmer uden at skabe nogen variabler.

I disse situationer kan vi bruge staticnøgleordet i Java. Hvis vi vil have adgang til klassemedlemmer uden at oprette en forekomst af klassen, er vi nødt til at erklære klassemedlemmerne statiske.

Den Mathklasse i Java har næsten alle sine medlemmer statisk. Så vi kan få adgang til dets medlemmer uden at oprette forekomster af matematikklassen. 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)); ) )

Output :

 Absolut værdi af -12 = 12 Værdi af PI = 3,141592653589793 Værdi af E = 2,718281828459045 2 2 = 4,0

I ovenstående eksempel har vi ikke oprettet nogen forekomster af Mathklassen. Men vi er i stand til at få adgang til dens metoder: abs()og pow()og variabler: PIog E.

Det er muligt, fordi metoderne og variablerne i Mathklassen er statiske.

Statiske metoder

Statiske metoder kaldes også klassemetoder. Det er fordi en statisk metode hører til klassen snarere end objektet til en klasse.

Og vi kan påberåbe statiske metoder direkte ved hjælp af klassens navn. 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 metode kan tilgås direkte fra andre klasser ved hjælp af klassens navn.

I hvert Java-program har vi erklæret mainmetoden static. Det er fordi for at køre programmet, skal JVM være i stand til at påberåbe sig hovedmetoden i den indledende fase, hvor der ikke findes nogen objekter i hukommelsen.

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

Output :

 2 * 2 = 4 2 + 3 = 5

I ovenstående program har vi erklæret en ikke-statisk metode navngivet multiply()og en statisk metode navngivet add()inden for klassen StaticTest.

Inde i hovedklassen kan vi se, at vi kalder den ikke-statiske metode ved hjælp af objektet fra klassen ( st.multiply(2, 2)). Vi kalder dog den statiske metode ved hjælp af klassens navn ( StaticTest.add(2, 3)).

Statiske variabler

Når vi opretter objekter i en klasse i Java, har hvert objekt sin egen kopi af alle variablerne 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 objekterne test1 og test2 have separate kopier af den variable alder. Og de er forskellige fra hinanden.

Men hvis vi erklærer en variabel statisk, deler alle objekter i klassen den samme statiske variabel. Det er fordi ligesom statiske metoder også statiske variabler er knyttet til klassen. Og vi behøver ikke oprette objekter i klassen for at få adgang til de statiske variabler. 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 adgang til den statiske variabel fra den anden klasse ved hjælp af klassens navn.

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

Output :

 min + 1 = 6 max + 1 = 11

I ovenstående program har vi deklareret en ikke-statisk variabel med navnet min og en statisk variabel med navnet max inden for klassen Test.

Inde i hovedklassen kan vi se, at vi kalder den ikke-statiske variabel ved hjælp af objektet til klassen ( obj.min + 1). Vi kalder dog den statiske variabel ved hjælp af klassens navn ( Test.max + 1).

Bemærk : Statiske variabler bruges sjældent i Java. I stedet bruges de statiske konstanter. Disse statiske konstanter er defineret ved static finalnøgleord og repræsenteret med store bogstaver. Dette er grunden til, at nogle mennesker også foretrækker at bruge store bogstaver til statiske variabler.

Få adgang til statiske variabler og metoder inden for klassen

Vi får adgang til den statiske variabel fra en anden klasse. Derfor har vi brugt klassens navn til at få adgang til det. Men hvis vi ønsker at få adgang til det statiske medlem inde fra klassen, kan det fås 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(); ) )

Output :

 Alder er 30 Statisk metode

Her er vi i stand til at få adgang til den statiske variabel og metoden direkte uden at bruge klassens navn. Det skyldes, at statiske variabler og metoder som standard er offentlige. Og da vi har adgang fra samme klasse, behøver vi ikke angive klassens navn.

Statiske blokke

I Java bruges statiske blokke til at initialisere de statiske variabler. For eksempel,

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

Her kan vi se, at vi har brugt en statisk blok 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 endelig display()udføres udskriftserklæringerne inde i metoden .

Indlejret statisk klasse

I Java kan vi erklære en klasse i en anden klasse. Sådanne klasser er kendt som indlejrede klasser. Indlejrede klasser er af to typer:

  • Statisk indlejrede klasser
  • Ikke-statiske indlejrede klasser

For eksempel,

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

For at lære mere, besøg Java Nested Class.

Interessante artikler...