Statische variabele in Java

โšก Slimme samenvatting

Statische variabele in Java Het behoort tot de klasse zelf en niet tot een object, en wordt eenmalig geรฏnitialiseerd wanneer de klasse wordt geladen. Eรฉn gedeelde kopie bedient alle instanties en is direct toegankelijk via de klassenaam zonder een object aan te maken.

  • ???? Statische variabele: Behoort tot de klasse, deelt รฉรฉn kopie over alle instanties en wordt eenmalig geรฏnitialiseerd bij het laden.
  • โš™๏ธ Statische methode: Behoort tot de klasse, heeft alleen toegang tot statische gegevens en negeert this/super.
  • ๐Ÿงฑ Statisch blok: Wordt eenmaal uitgevoerd bij het laden van de klasse om statische dataleden te initialiseren.
  • ๐Ÿ”— Toegang: Statische leden zijn rechtstreeks toegankelijk via ClassName.member zonder object.
  • โ›” Beperking: Een statische methode kan niet rechtstreeks verwijzen naar niet-statische (instantie) variabelen.

Statische variabele in Java

De statische kan zijn:

  1. Statische variabelen
  2. Statische methoden
  3. Statische blokken van Code.

Laten we eerst eens kijken naar statische variabelen en statische methoden.

Wat is een statische variabele in Java?

Statische variabele in Java Een statische variabele is een variabele die bij de klasse hoort en slechts รฉรฉn keer aan het begin van de uitvoering wordt geรฏnitialiseerd. Het is een variabele die bij de klasse hoort en niet bij het object (instantie). Statische variabelen worden slechts รฉรฉn keer geรฏnitialiseerd, aan het begin van de uitvoering. Deze variabelen worden als eerste geรฏnitialiseerd, vรณรณr de initialisatie van instantievariabelen.

  • Eรฉn exemplaar dat door alle instanties van de klasse moet worden gedeeld
  • Een statische variabele is rechtstreeks toegankelijk via de klassenaam en heeft geen enkel object nodig

Syntax:

<class-name>.<variable-name>

Wat is statische methode? Java?

Statische methode in Java is een methode die tot de klasse behoort en niet tot het object. Een statische methode heeft alleen toegang tot statische gegevens. Het is een methode die tot de klasse behoort en niet tot het object (instance). Een statische methode heeft alleen toegang tot statische gegevens. Het heeft geen toegang tot niet-statische gegevens (instantievariabelen).

  • Een statische methode kan alleen andere statische methoden aanroepen en kan er geen niet-statische methode van oproepen.
  • Een statische methode is rechtstreeks toegankelijk via de klassenaam en heeft geen enkel object nodig
  • Een statische methode kan hoe dan ook niet verwijzen naar de trefwoorden 'dit' of 'super'

Syntax:

<class-name>.<method-name>

Let op: De main-methode is statisch, omdat deze toegankelijk moet zijn voordat een toepassing kan worden uitgevoerd voordat er een instantiatie plaatsvindt.

Laten we de nuances van de statische trefwoorden leren door enkele oefeningen te doen!

Voorbeeld: hoe u statische variabelen en methoden aanroept

Stap 1) Kopieer de volgende code in een 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++;
//}

}

Stap 2) Bewaar en compileer de code. Voer de code uit als, Java-demo.

Stap 3) Verwachte output wordt hieronder weergegeven


Java Statische methoden en variabelen

Het onderstaande diagram laat zien hoe referentievariabelen en -objecten worden gemaakt en hoe statische variabelen door de verschillende instanties worden benaderd.


Java Statische methoden en variabelen

Stap 4) Het is mogelijk om toegang te krijgen tot een statische variabele van buiten de klasse met behulp van de syntaxis Klassenaam. Variabele_naam. Verwijder commentaarregel # 7 en 8. Opslaan, compileren en uitvoeren. Observeer de uitvoer.

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

Stap 5) Verwijder commentaarregel 25,26 & 27. Opslaan, compileren en uitvoeren.

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

Stap 6) Fout = ? Dit komt omdat het niet mogelijk is om toegang te krijgen tot de instantievariabele โ€œa"van Java statische klassenmethode"aanwas'.

Wat is een statisch blok? Java?

De statisch blok is een blok met instructies binnen a Java klasse die wordt uitgevoerd wanneer een klasse voor het eerst in de JVM. Een statisch blok helpt bij het initialiseren van de statische gegevensleden, net zoals constructors helpen bij het initialiseren van instantieleden.

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

Het volgende programma is een voorbeeld van een statisch Java-blok.

Voorbeeld: toegang krijgen tot een statisch 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);

 	}
}

U krijgt het volgende resultaat van het programma.

Value of a = 10
Value of b = 20

Veelgestelde vragen

Een statische variabele behoort tot de klasse en heeft รฉรฉn gedeelde kopie voor alle objecten. Een instantievariabele behoort tot elk object en krijgt een aparte kopie per instantie, die wordt geรฏnitialiseerd wanneer het object wordt aangemaakt.

Nee. Een statische methode heeft alleen toegang tot statische gegevens en andere statische methoden. Het verwijzen naar een niet-statische (instantie) variabele vanuit een statische context veroorzaakt een compilatiefout, omdat er nog geen object bestaat.

Een statisch blok wordt eenmaal uitgevoerd, wanneer de klasse voor het eerst in de JVM wordt geladen, voordat er objecten worden aangemaakt of de main-methode wordt uitgevoerd. Het wordt gebruikt om statische dataleden te initialiseren.

AI kan analyseren hoe een veld of methode wordt gebruikt en statische waarden aanbevelen wanneer gegevens worden gedeeld over alle instanties of wanneer er geen instantiestatus nodig is.ping Ontwikkelaars vermijden onnodige objecten en verminderen het geheugengebruik.

Ja. Analyse met behulp van AI kan veranderlijke statische statusinformatie signaleren die problemen met threadveiligheid, verborgen globale afhankelijkheden of testproblemen veroorzaakt, en veiligere alternatieven voorstellen, zoals instantievelden of dependency injection.

Vat dit bericht samen met: