Statisk variabel in Java

Det statiska kan vara:

  1. Statiska variabler
  2. Statiska metoder
  3. Statiska block av kod.

Låt oss först titta på statiska variabler och statiska metoder.

Vad är statisk variabel i Java?

Statisk variabel i Java är variabel som tillhör klassen och initieras endast en gång i början av exekveringen. Det är en variabel som tillhör klassen och inte till object(instance ). Statiska variabler initieras endast en gång, i början av exekveringen. Dessa variabler kommer att initieras först, innan initieringen av eventuella instansvariabler.

  • En enda kopia som ska delas av alla instanser i klassen
  • En statisk variabel kan nås direkt av klassnamnet och behöver inget objekt

Syntax:

<class-name>.<variable-name>

Vad är statisk metod i Java?

Statisk metod i Java är en metod som tillhör klassen och inte till objektet. En statisk metod kan endast komma åt statisk data. Det är en metod som tillhör klassen och inte till objektet (instansen). En statisk metod kan endast komma åt statisk data. Den kan inte komma åt icke-statisk data (instansvariabler).

  • En statisk metod kan endast anropa andra statiska metoder och kan inte anropa en icke-statisk metod från den.
  • En statisk metod kan nås direkt av klassnamnet och behöver inget objekt
  • En statisk metod kan inte hänvisa till "detta" eller "super" nyckelord på något sätt

Syntax:

<class-name>.<method-name>

Obs: huvudmetoden är statisk, eftersom den måste vara tillgänglig för att en applikation ska kunna köras, innan någon instansiering äger rum.

Låt oss lära oss nyanserna av de statiska nyckelorden genom att göra några övningar!

Exempel: Hur man anropar statiska variabler & metoder

Steg 1) Kopiera följande kod till en editor

public class Demo{
   public static void main(String args[]){
     Student s1 = new Student();
     s1.showData();
     Student s2 = new Student();
     s2.showData();
     //Student.b++;
     //s1.showData();
  }
}

class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.

  Student(){
   //Constructor incrementing static variable b
   b++;
  }

   public void showData(){
      System.out.println("Value of a = "+a);
      System.out.println("Value of b = "+b);
   }
//public static void increment(){
//a++;
//}

}

Steg 2) Spara och kompilera koden. Kör koden som, java demo.

Steg 3) Förväntad utgång visas nedan


Java Statiska metoder och variabler

Följande diagram visar hur referensvariabler & objekt skapas och statiska variabler nås av de olika instanserna.


Java Statiska metoder och variabler

Steg 4) Det är möjligt att komma åt en statisk variabel från utanför klassen med hjälp av syntaxen ClassName.Variable_Name. Avkommentera rad #7 & 8. Spara, kompilera och kör. Observera utgången.

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2
Value of a = 0
Value of b = 3

Steg 5) Avkommentera rad 25,26 & 27 . Spara, kompilera och kör.

	 error: non-static variable a cannot be referenced from a static context a++; 

Steg 6) Fel = ? Detta beror på att det inte är möjligt att komma åt instansvariabeln "a"från java static class method"ökning".

Vad är Static Block in Java?

Ocuco-landskapet statiskt block är ett block av uttalande inuti en Java klass som kommer att köras när en klass först laddas in i JVM. En statiskt block hjälper till att initiera de statiska datamedlemmarna, precis som konstruktörer hjälper till att initiera instansmedlemmar.

class Test{
 static {
 //Code goes here
 }
}

Följande program är ett exempel på java statiskt block.

Exempel: Hur man kommer åt statiskt block

public class Demo {
 static int a;
 static int b;
 static {
    a = 10;
    b = 20;
 }
 public static void main(String args[]) {

  System.out.println("Value of a = " + a);
  System.out.println("Value of b = " + b);

 	}
}

du kommer att få följande utdata från programmet.

Value of a = 10
Value of b = 20