Java Statik Açar Söz


JavaBaxılıb 45

Java'da statik birdir söz əsasən yaddaşı idarə etmək üçün istifadə etdiyimiz. Bu təlimatda, Java-da statik açar sözün necə istifadə ediləcəyini və fərqli məqsədini ətraflı müzakirə edəcəyik. Bu təlimdə Java Statik Sınıfı, Java Statik Metodu və Java Statik Dəyişənləri haqqında da danışacağıq.

Java statik açar söz nədir

Əsasən istədiyimiz zaman Java statik açar sözdən istifadə edirik keçid sinif nümunəsi yaratmadan üzvlər. Bu, statik üzvlərin sinifin bir hissəsi olduğu və sinif nümunəsinə aid olmadığı mənasını verir. Java istifadə edə bilərik statik aşağıdakılar üçün açar söz:

  • Blok
  • Dəyişən
  • Üsul
  • Sinif

Yuxarıdakıları statik açar sözlə yaratdığımızda, bir obyekt yaratmadan birbaşa əldə edə bilərik. Əvvəlcədən java açar sözlə müraciət etməliyik statik bəyannamədə. Statik üzvlər, sinifin hər hansı bir nümunəsi üçün yaddaş bölüşürlər və buna görə də yaddaşı idarə etmək üçün istifadə etdiyimizi söyləyirik.

Java'da hər zaman Elanlar üsul ilə java statik açar söz, çünki biz birbaşa istifadə edə bilərik və sinif ilə birlikdə yüklənir.

Hər birini ətraflı müzakirə edək.

Java Statik bloku

Bir blokda java açar söz kimi ad olduqda statik, buna statik blok deyirik. Sınıfı yükləyərkən hər hansı bir statik üzvü işə salmaq istədikdə statik blokdan istifadə edirik. Əvvəlcə əsas metodu çağırmazdan əvvəl bu statik bloku icra edir. Aşağıdakı bir nümunə ilə bunu daha da dərk edə bilərik.

Sintaksis:

static {
//code
}

Tək bir statik blok nümunəsi

Çap ifadəsi və statik dəyişən ilə tək bir statik blok yaratdıq i dəyər təyinatı. İndi icra zamanı sinif yüklədikdə əvvəlcə ifadəni yazdırdığı statik bloku icra edir və sonra dəyişənə dəyər verir i. Bundan sonra əsas metodu çağırır və qalan ifadələri icra edir. Əvvəlcə “İçəridə statik blok” yazdırır, sonra “Əsas metod daxilində” yazdırır.

public class StaticBlockExample {
  static int i;
  static {
    System.out.println("Inside the static block");
    i = 10;
  }
  public static void main(String[] args) {
    System.out.println("Inside the main method");
    System.out.println("Value of i: " + i);

  }

}
Inside the static block
Inside the main method
Value of i: 10

Çoxsaylı statik blok nümunəsi

Java'da bir çox statik blok da yarada bilərik. Proqramda yazıldığı kimi eyni qaydada icra olunur. Aşağıdakı nümunədə, statik blok 1-dəki dəyəri statik blok 2-dəki dəyər üst-üstə aldığına görə çıxışda String dəyərini “Axşamınız xeyir” kimi yazdığını görə bilərik.

public class MultipleStaticBlockExample {
  
  static String value;
  static int number;
  
  static {
    System.out.println("Inside the static block 1");
    value = "good afternoon";
    number = 30;
  }

  static {
    System.out.println("Inside the static block 2");
    value = "good evening";
    number = 20;
  }
  public static void main(String[] args) {
    System.out.println("Inside the main method");
    System.out.println("String value: " + value);
    System.out.println("Integer value: " + number);
  }

}
Inside the static block 1
Inside the static block 2
Inside the main method
String value: good evening
Integer value: 20

İndi statik dəyişəni anlamaq üçün davam edək.

Java Statik Dəyişənlər

A elan etdikdə dəyişən java ilə statik dəyişən adından əvvəl açar söz, statik dəyişən deyirik. Statik dəyişənlər ümumidır və ümumiyyətlə sinifin nümunəsindən daha çox sinfə aiddir. Buna görə bunlara da deyilir Sinif dəyişənləri. Bu statik dəyişənlərə bir obyektin daxil olmasını tələb edən qeyri-statik dəyişənlərdən fərqli bir obyekt istifadə etmədən birbaşa əldə edə bilərik. Statik dəyişənlər, yaradılan bir sinifin istənilən nümunəsi üçün eyni yaddaşı paylaşır. Bu dəyişənlər adlı bir boşluqda saxlanılır Metafaz JVM yaddaş hovuzunda.

Bir proqram həm statik blokları, həm də dəyişkənləri ehtiva edirsə, onları mövcud olduğu qaydada yerinə yetirir.

Sintaksis:

static datatype variable_name;

//Example
static int i;

Çox obyektli statik dəyişən nümunəsi

Adı verilən bir sinif olduğumuz aşağıdakı nümunəni nəzərdən keçirin Tələbə Ayrıca 1 statik dəyişən elan etdik kollec və 2 qeyri-statik dəyişənlərin adı və hissəsi. Statik blokun içərisində statik dəyişəni başlatdıq. İndi sinif yüklənəndə icra zamanı əvvəl bu statik dəyişəni işə salır və sonra konstruktoru çağırdığı əsas metodu çağırır. Fərqli ad və hissə ilə 2 ayrı tələbə obyektimiz s1 və s2 var. Ancaq çıxışda fərq etsəniz kollec dəyər hər iki obyekt üçün eynidır. Statik dəyişənin bütün sinif nümunələri üçün eyni dəyəri paylaşması və yaddaşın yalnız bir dəfə ayrılmasıdır.

Java Static açar sözPin

public class Student{

  static String college;
  public String name;
  public String dept;
  
  static {
    System.out.println("Static Block");
    college = "BITS";
  }
  
  Student(String name, String dept){
    this.name = name;
    this.dept = dept;
  }
  
  public static void main(String[] args) {
    Student s1 = new Student("Harsh", "IT");
    Student s2 = new Student("Kiran", "CSE");
    System.out.println(s1.name + " " + s1.dept + " " + college);
    System.out.println(s2.name + " " + s2.dept + " " + college);

  }

}
Static Block
Harsh IT BITS
Kiran CSE BITS

Sayğacdan istifadə edən statik dəyişən nümunəsi

İndi anlayışı daha yaxşı anlamanıza kömək edəcək statik və qeyri-statik dəyişənlər arasındakı fərqi görəcəyik. Statik bir dəyişən yaratdıq mübarizə və qeyri-statik bir dəyişəndir saymaq hər ikisi də 0 dəyərinə başlandı. Konstruktorda hər iki dəyəri artırırıq və çap edirik. İndi. ilk obyekti yaratdığımızda hər iki dəyəri də 1 kimi yazdırır. İkinci obyekti yaratdığımızda qeyri-statik dəyişən yenidən başlanğıc edilir və dolayısı ilə dəyər yenə də 1 olacaq, lakin statik dəyişən eyni yaddaşı saxlayır və buna görə də dəyər Bunun səbəbi statik dəyişənlərin sinifin yüklənməsi zamanı yalnız bir dəfə başlanğıc edilməsi və bütün obyektlər üçün ümumi olmasıdır. Ümid edirəm ki, dəyişənlərə münasibətdə javadakı statik açar sözü aydın başa düşdük.

public class StaticCounter {
  static int counter = 0;
  public int count = 0;
  
  StaticCounter(){
    counter ++;
    count ++;
    System.out.println("Static Counter: " + counter);
    System.out.println("Non static Count: " + count);
  }
  public static void main(String[] args) {
    StaticCounter sc1 = new StaticCounter();
    StaticCounter sc2 = new StaticCounter();
    
  }

}
Static Counter: 1
Non static Count: 1
Static Counter: 2
Non static Count: 1

Sonra, statik metodlara keçəcəyik.

Java Statik Metodu

Hər hansı bir metoddan əvvəl java statik açar sözdən istifadə etdikdə, buna statik metod deyirik. Statik metod ona daxil olmaq üçün hər hansı bir sinif nümunəsini tələb etmir və obyektdən daha çox bir sinifə aiddir. Bu metodlara birbaşa daxil ola bilərik və dəyərini dəyişdirmək üçün bu metod daxilindəki statik dəyişənlərə də daxil ola bilərik. Java-da statik metodun ən yaxşı nümunələrindən biridir Elanlar metodu.

Aşağıda statik metoddan istifadə məhdudiyyətləri verilmişdir:

  • Statik metod daxilində statik olmayan üzvlərə daxil ola bilmirik
  • Statik metoddan qeyri-statik metodlar çağırıla bilmir
  • İstifadə etmək olmur super statik metod daxilində açar söz

Sintaksis:

static return_type method_name() {
//code
}

//Example
static void display() {
//code
}

İndi statik dəyişənlərlə yanaşı statik metoddan istifadə nümunəsinə baxaq. Statik olmayan bir metodumuz var displayValue bir nümunə dəyişən başlanğıc və statik bir metod ilə göstərmək statik dəyişən başlatma ilə. Əsas metod daxilində statik bir üsula daxil olmaq üçün bir obyektə ehtiyacımız yoxdur.

public class StaticMethodDemo {
  
  static int a;
  public String value;
  
  //Non Static method
  public void displayValue() {
    value = "Java";
    System.out.println("String value: " + value);
  }
  
  //Static Method
  static void display() {
    a = 10;
    System.out.println("Value of a: " + a);
  }

  public static void main(String[] args) {
    StaticMethodDemo s = new StaticMethodDemo();
    display();
    s.displayValue();

  }

}
Value of a: 10
String value: Java

İndi statik olmayan bir metod adlandırdığımızı və statik bir metoddan bir nümunə dəyişəninə daxil olduğumuzu düşünün. Aşağıdakı tərtib səhvini alacağıq.

public class StaticMethodDemo {
  
  static int a;
  public String value;
  
  //Non Static method
  public void displayValue() {
    value = "Java";
    System.out.println("String value: " + value);
  }
  
  //Static Method
  static void display() {
    a = 10;
    System.out.println("Value of a: " + a);
    value = "Hello";
    displayValue();
  }

  public static void main(String[] args) {
    StaticMethodDemo s = new StaticMethodDemo();
    display();
    s.displayValue();

  }

}
Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
  Cannot make a static reference to the non-static field value
  Cannot make a static reference to the non-static method displayValue() from the type StaticMethodDemo

  at StaticMethodDemo.display(StaticMethodDemo.java:16)
  at StaticMethodDemo.main(StaticMethodDemo.java:22)

Gəlin, statik sinfi anlamaq üçün davam edin.

Java Statik Sınıfı

A yaratsaq sinif java kimi önəklə statik açar söz, buna statik bir sinif deyirik. Statik sinfi yalnız iç içə siniflər üçün istifadə edə bilərik, yəni. başqa sinif daxilində bir sinif. Yalnız daxili siniflər statik bir sinif olaraq edilə bilər.

Statik sinifin xüsusiyyətləri

  • Xarici sinifin yalnız statik dəyişənlərinə daxil ola bilər
  • Xarici sinifin digər statik olmayan dəyişənlərinə və ya qeyri-statik metodlarına daxil olmaq mümkün deyil.
  • Statik sinif qeyri-statik metodlardan ibarət ola bilər.
  • Bu sinifin statik metoduna daxil olmaq lazımdırsa, statik sinif üçün bir obyekt yaratmağa ehtiyacımız yoxdur.
  • Xarici sinfi statik elan edə bilmirik və yalnız daxili sinif üçün java statik açar sözdən istifadə edə bilərik.

Sintaksis:

public class classname {
  static class innerclassname {

  }
}

İndi iç içə statik sinifdən istifadə etmək üçün müxtəlif nümunələrə baxaq.

Qeyri-statik metodla statik sinif nümunəsi

Bu nümunədə yuvalanmış bir statik sinif var Daxili qeyri-statik metodla ekran. Bu metodun içərisində birbaşa Xarici sinifin statik dəyişənlərinə daxil ola bilərik. Bu metodu Xarici sinifdən əsas metod adlandırmaq üçün metod qeyri-statik olduğundan daxili sinifin bir obyekti yaratmalıyıq. Statik bir metod yaratsaq, bu tələb olunmur. Bunu aşağıdakı növbəti nümunədə görəcəyik.

public class OuterClass {
  static int i = 5;
  
  static class Inner {
    public void display() {
      i ++;
      System.out.println(" Value of i: " + i);
    }
  }

  public static void main(String[] args) {
    OuterClass.Inner i = new OuterClass.Inner();
    i.display();

  }

}
Value of i: 6

Statik metodla statik sinif nümunəsi

İndi əsas metoddan statik sinifin statik metodunu necə çağıracağımızı görək. Metod statik olduğundan, aşağıdakı nümunədə göründüyü kimi daxili sinif adından birbaşa istifadə edərək metodu əsasdan əldə edə bilərik.

public class OuterClass {
  static int i = 5;
  
  static class Inner {
    
    static void display() {
      i++;
      System.out.println("Value of i: " + i);
    }
  }

  public static void main(String[] args) {
    OuterClass.Inner.display();

  }

}
Value of i: 6

Bütün Java statik üzvlərinə nümunə

Aşağıda ümumiləşdirmək üçün blok, dəyişən, metod və sinif kimi bütün java statik açar söz üzvlərini əhatə edən bir nümunədir.

public class StaticExample {

  static int number;
  public String value;
  
  static {
    number = 5;
    System.out.println("Value of number inside static block: " + number);
  }
  
  public void displayString() {
    value = "Hello";
    System.out.println("Value of string: " + value);
    number =20;
    System.out.println("Value of number inside Outer class method: " + number);
  }
  
  
  static class Inner {
    static void display() {
      number = 10;
      System.out.println("Value of number inside static class method: " + number);
    }
  }
  
  public static void main(String[] args) {
    StaticExample s = new StaticExample();
    StaticExample.Inner.display();
    s.displayString();

  }

}
Value of number inside static block: 5
Value of number inside static class method: 10
Value of string: Hello
Value of number inside Outer class method: 20

arayış

Şərh yaz

Translate »
1