Statisk Java-nyckelord (med exempel)

I den här handledningen lär vi oss det Java-statiska nyckelordet tillsammans med statiska metoder, statiska variabler och statiska block med hjälp av exempel.

Vad är ett statiskt nyckelord i Java?

Om vi ​​vill komma åt klassmedlemmar i Java måste vi först skapa en instans av klassen. Men det kommer att finnas situationer där vi vill komma åt klassmedlemmar utan att skapa några variabler.

I sådana situationer kan vi använda staticnyckelordet i Java. Om vi ​​vill komma åt klassmedlemmar utan att skapa en instans av klassen, måste vi förklara klassmedlemmarna statiska.

Den Mathklass i Java har nästan alla sina medlemmar statiska. Så vi kan komma åt medlemmarna utan att skapa instanser av matematikklassen. Till exempel,

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

Utgång :

 Absolut värde av -12 = 12 Värde för PI = 3,141592653589793 Värde för E = 2,718281828459045 2 2 = 4,0

I exemplet ovan har vi inte skapat några instanser av Mathklassen. Men vi har tillgång till dess metoder: abs()och pow()och variabler: PIoch E.

Det är möjligt eftersom metoderna och variablerna i Mathklassen är statiska.

Statiska metoder

Statiska metoder kallas också klassmetoder. Det beror på att en statisk metod tillhör klassen snarare än objektet för en klass.

Och vi kan åberopa statiska metoder direkt med hjälp av klassnamnet. Till exempel,

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

Här kan vi se att den statiska metoden kan nås direkt från andra klasser med klassnamnet.

I varje Java-program har vi förklarat mainmetoden static. Det beror på att för att köra programmet bör JVM kunna åberopa huvudmetoden under den inledande fasen där inga objekt finns i minnet.

Exempel 1: Java-statiska och icke-statiska 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)); ) )

Utgång :

 2 * 2 = 4 2 + 3 = 5

I ovanstående program har vi förklarat en icke-statisk metod namngiven multiply()och en statisk metod namngiven add()i klassen StaticTest.

Inuti huvudklassen kan vi se att vi kallar den icke-statiska metoden med objektet för klassen ( st.multiply(2, 2)). Vi anropar dock den statiska metoden med hjälp av klassnamnet ( StaticTest.add(2, 3)).

Statiska variabler

I Java, när vi skapar objekt av en klass, kommer varje objekt att ha sin egen kopia av alla variablerna i klassen. Till exempel,

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

Här kommer både objekten test1 och test2 att ha separata kopior av den variabla åldern. Och de skiljer sig från varandra.

Men om vi förklarar en variabel statisk, delar alla objekt i klassen samma statiska variabel. Det beror på att som statiska metoder också statiska variabler är associerade med klassen. Och vi behöver inte skapa objekt av klassen för att komma åt de statiska variablerna. Till exempel,

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

Här kan vi se att vi kommer åt den statiska variabeln från den andra klassen med hjälp av klassnamnet.

Exempel 2: Java-statiska och icke-statiska 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)); ) )

Utgång :

 min + 1 = 6 max + 1 = 11

I ovanstående program har vi deklarerat en icke-statisk variabel med namnet min och en statisk variabel med namnet max inom klass Test.

Inuti huvudklassen kan vi se att vi kallar den icke-statiska variabeln med hjälp av objektet för klassen ( obj.min + 1). Vi anropar dock den statiska variabeln genom att använda klassnamnet ( Test.max + 1).

Obs! Statiska variabler används sällan i Java. Istället används de statiska konstanterna. Dessa statiska konstanter definieras med static finalnyckelord och representeras i versaler. Det är därför som vissa människor föredrar att använda versaler också för statiska variabler.

Åtkomst till statiska variabler och metoder inom klassen

Vi använder den statiska variabeln från en annan klass. Därför har vi använt klassnamnet för att komma åt det. Men om vi vill komma åt den statiska medlemmen inifrån klassen kan den nås direkt. Till exempel,

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

Utgång :

 Ålder är 30 Statisk metod

Här kan vi komma åt den statiska variabeln och metoden direkt utan att använda klassnamnet. Det beror på att statiska variabler och metoder som standard är offentliga. Och eftersom vi kommer åt från samma klass behöver vi inte ange klassnamnet.

Statiska block

I Java används statiska block för att initialisera de statiska variablerna. Till exempel,

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

Här kan vi se att vi har använt ett statiskt block med syntaxen:

 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.
  • Och slutligen display()körs utskriftsuttalandena inuti metoden .

Kapslad statisk klass

I Java kan vi förklara en klass i en annan klass. Sådana klasser är kända som kapslade klasser. Kapslade klasser är av två typer:

  • Statiska kapslade klasser
  • Icke-statiska kapslade klasser

Till exempel,

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

För att lära dig mer, besök Java Nested Class.

Intressanta artiklar...