Statisk variabel i Java

⚡ Smart opsummering

Statisk variabel i Java tilhører klassen snarere end et objekt og initialiseres én gang, når klassen indlæses. En enkelt delt kopi betjener alle instanser, der er direkte tilgængelig via klassenavnet uden at oprette et objekt.

  • 📦 Statisk variabel: Tilhører klassen, deler én kopi på tværs af alle instanser, initialiseres én gang ved indlæsning.
  • 🇧🇷 Statisk metode: Tilhører klassen, har kun adgang til statiske data og ignorerer denne/super.
  • 🧱 Statisk blok: Kører én gang, når klassen indlæses, for at initialisere statiske datamedlemmer.
  • 🔗 Adgang: Nå statiske medlemmer direkte via ClassName.member uden et objekt.
  • ⛔ Begrænsning: En statisk metode kan ikke referere direkte til ikke-statiske (instans-) variabler.

Statisk variabel i Java

Det statiske kan være:

  1. Statiske variable
  2. Statiske metoder
  3. Statiske blokke af Code.

Lad os først se på statiske variable og statiske metoder.

Hvad er statisk variabel i Java?

Statisk variabel i Java er en variabel, der tilhører klassen og kun initialiseres én gang ved starten af ​​udførelsen. Det er en variabel, der tilhører klassen og ikke objektet (instansen). Statiske variabler initialiseres kun én gang, ved starten af ​​udførelsen. Disse variabler initialiseres først, før initialiseringen af ​​eventuelle instansvariabler.

  • En enkelt kopi, der skal deles af alle forekomster af klassen
  • En statisk variabel kan tilgås direkte af klassenavnet og behøver ikke noget objekt

Syntaks:

<class-name>.<variable-name>

Hvad er statisk metode i Java?

Statisk metode i Java er en metode, der tilhører klassen og ikke til objektet. En statisk metode kan kun få adgang til statiske data. Det er en metode, der hører til klassen og ikke til objektet (instansen). En statisk metode kan kun få adgang til statiske data. Den kan ikke få adgang til ikke-statiske data (instansvariabler).

  • En statisk metode kan kun kalde andre statiske metoder og kan ikke kalde en ikke-statisk metode fra den.
  • En statisk metode kan tilgås direkte af klassenavnet og behøver ikke noget objekt
  • En statisk metode kan ikke på nogen måde referere til "dette" eller "super" søgeord

Syntaks:

<class-name>.<method-name>

Bemærk: hovedmetoden er statisk, da den skal være tilgængelig for at en applikation kan køre, før en instansiering finder sted.

Lad os lære nuancerne af de statiske nøgleord ved at lave nogle øvelser!

Eksempel: Sådan kalder du statiske variable og metoder

Trin 1) Kopier følgende kode ind i 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++;
//}

}

Trin 2) Gem og kompilér koden. Kør koden som, java demo.

Trin 3) Forventet output vises nedenfor


Java Statiske metoder og variabler

Følgende diagram viser, hvordan referencevariabler og -objekter oprettes, og statiske variabler tilgås af de forskellige forekomster.


Java Statiske metoder og variabler

Trin 4) Det er muligt at få adgang til en statisk variabel uden for klassen ved hjælp af syntaksen Klassenavn.Variabel_navn. Fjern kommentar linje #7 og 8. Gem, kompilér og kør. Observer outputtet.

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

Trin 5) Fjern kommentar linje 25,26 & 27. Gem, kompilér og kør.

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

Trin 6) Fejl = ? Dette skyldes, at det ikke er muligt at få adgang til instansvariablen "a"fra java statisk klasse metode"tilvækst".

Hvad er statisk blokering Java?

statisk blok er en udsagnsblok inde i en Java klasse, der vil blive udført, når en klasse første gang indlæses i FMV. En statisk blok hjælper med at initialisere de statiske datamedlemmer, ligesom konstruktører hjælper med at initialisere instansmedlemmer.

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

Følgende program er eksemplet med java statisk blok.

Eksempel: Sådan får du adgang til statisk blok

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 vil få følgende output af programmet.

Value of a = 10
Value of b = 20

Ofte Stillede Spørgsmål

En statisk variabel tilhører klassen og har én delt kopi for alle objekter. En instansvariabel tilhører hvert objekt og får en separat kopi pr. instans, som initialiseres, når objektet oprettes.

Nej. En statisk metode kan kun tilgå statiske data og andre statiske metoder. Reference til en ikke-statisk (instans) variabel fra en statisk kontekst forårsager en kompileringsfejl, fordi der endnu ikke findes noget objekt.

En statisk blok kører én gang, når klassen indlæses i JVM'en, før et objekt oprettes eller hovedmetoden køres. Den bruges til at initialisere statiske datamedlemmer.

AI kan analysere, hvordan et felt eller en metode bruges, og anbefale statisk styring, når data deles på tværs af alle instanser, eller der ikke er behov for nogen instanstilstand.ping Udviklere undgår unødvendige objekter og reducerer hukommelsesforbruget.

Ja. AI-assisteret analyse kan markere foranderlige statiske tilstande, der forårsager problemer med trådsikkerhed, skjulte globale afhængigheder eller testvanskeligheder, og foreslå sikrere alternativer såsom instansfelter eller afhængighedsindsprøjtning.

Opsummer dette indlæg med: