Statisk variabel in Java

โšก Smart sammanfattning

Statisk variabel in Java tillhรถr klassen snarare รคn nรฅgot objekt och initieras en gรฅng nรคr klassen laddas. En enda delad kopia hanterar alla instanser, รฅtkomlig direkt via klassnamnet utan att skapa ett objekt.

  • ๐Ÿ“ฆ Statisk variabel: Tillhรถr klassen, delar en kopia รถver alla instanser, initieras en gรฅng vid laddning.
  • โš™๏ธ Statisk metod: Tillhรถr klassen, har endast รฅtkomst till statisk data och ignorerar denna/super.
  • ๐Ÿงฑ Statiskt block: Kรถrs en gรฅng nรคr klassen laddas fรถr att initiera statiska datamedlemmar.
  • ๐Ÿ”— Tillgรฅng: Nรฅ statiska medlemmar direkt via ClassName.member utan ett objekt.
  • โ›” Restriktion: En statisk metod kan inte direkt referera till icke-statiska (instans-) variabler.

Statisk variabel in Java

Det statiska kan vara:

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

Lรฅt oss fรถrst titta pรฅ statiska variabler och statiska metoder.

Vad รคr statisk variabel i Java?

Statisk variabel i Java รคr en 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 objektet (instansen). Statiska variabler initieras endast en gรฅng, i bรถrjan av exekveringen. Dessa variabler initieras fรถrst, innan initieringen av nรฅgra 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

Vanliga frรฅgor

En statisk variabel tillhรถr klassen och har en delad kopia fรถr alla objekt. En instansvariabel tillhรถr varje objekt och fรฅr en separat kopia per instans, initierad nรคr objektet skapas.

Nej. En statisk metod kan endast komma รฅt statisk data och andra statiska metoder. Att referera till en icke-statisk (instans) variabel frรฅn en statisk kontext orsakar ett kompileringsfel, eftersom inget objekt finns รคnnu.

Ett statiskt block kรถrs en gรฅng, nรคr klassen fรถrst laddas in i JVM:n, innan nรฅgot objekt skapas eller main-metoden kรถrs. Det anvรคnds fรถr att initiera statiska datamedlemmar.

AI kan analysera hur ett fรคlt eller en metod anvรคnds och rekommendera statisk kod nรคr data delas mellan alla instanser eller inget instanstillstรฅnd behรถvs, helping utvecklare undviker onรถdiga objekt och minskar minnesanvรคndningen.

Ja. AI-assisterad analys kan flagga fรถrรคnderliga statiska tillstรฅnd som orsakar problem med trรฅdsรคkerhet, dolda globala beroenden eller testproblem, och fรถreslรฅ sรคkrare alternativ som instansfรคlt eller beroendeinjektion.

Sammanfatta detta inlรคgg med: