„Java“ statinis raktinis žodis (su pavyzdžiais)

Šioje pamokoje pavyzdžių pagalba sužinosime apie „Java“ statinį raktinį žodį, kartu su statiniais metodais, statiniais kintamaisiais ir statiniais blokais.

Kas yra „Java“ statinis raktinis žodis?

Jei „Java“ norime pasiekti klasės narius, pirmiausia turime sukurti klasės egzempliorių. Tačiau bus situacijų, kai norime pasiekti klasės narius nekurdami jokių kintamųjų.

Tokiose situacijose staticraktinį žodį galime naudoti „ Java“. Jei norime pasiekti klasės narius nesukurdami klasės egzemplioriaus, turime klasių narius paskelbti statiškais.

MathJava “ klasėje beveik visi nariai yra statiniai. Taigi, mes galime pasiekti jo narius nekurdami matematikos klasės egzempliorių. Pavyzdžiui,

 public class Main ( public static void main( String() args ) ( // accessing the methods of the Math class System.out.println("Absolute value of -12 = " + Math.abs(-12)); System.out.println("Value of PI = " + Math.PI); System.out.println("Value of E = " + Math.E); System.out.println("2^2 = " + Math.pow(2,2)); ) )

Išvestis :

 Absoliuti vertė -12 = 12 PI reikšmė = 3,141592653589793 E reikšmė = 2,718281828459045 2 2 = 4,0

Ankstesniame pavyzdyje mes nesukūrėme jokių Mathklasės egzempliorių . Bet mes galime prieiti prie savo metodus: abs()ir pow()ir kintamieji: PIir E.

Tai įmanoma, nes Mathklasės metodai ir kintamieji yra statiški.

Statiniai metodai

Statiniai metodai dar vadinami klasės metodais. Taip yra todėl, kad statinis metodas priklauso klasei, o ne klasės objektui.

Statinius metodus galime naudoti tiesiogiai naudodami klasės pavadinimą. Pavyzdžiui,

 class Test ( // static method inside the Test class public static void method() (… ) ) class Main ( // invoking the static method Test.method(); )

Čia galime pamatyti, kad naudojant statinį metodą galima tiesiogiai pasiekti kitas klases naudojant klasės pavadinimą.

Kiekvienoje „Java“ programoje mes deklaravome mainmetodą static. Taip yra todėl, kad vykdant programą JVM turėtų sugebėti pradiniame etape iškviesti pagrindinį metodą, kai atmintyje nėra objektų.

1 pavyzdys: „Java“ statiniai ir nestatiniai metodai

 class StaticTest ( // non-static method int multiply(int a, int b)( return a * b; ) // static method static int add(int a, int b)( return a + b; ) ) public class Main ( public static void main( String() args ) ( // create an instance of the StaticTest class StaticTest st = new StaticTest(); // call the nonstatic method System.out.println(" 2 * 2 = " + st.multiply(2,2)); // call the static method System.out.println(" 2 + 3 = " + StaticTest.add(2,3)); ) )

Išvestis :

 2 * 2 = 4 2 + 3 = 5

Ankstesnėje programoje mes deklaravome ne statinį metodą, o klasėje multiply()- statinį .add()StaticTest

Pagrindinės klasės viduje galime pamatyti, kad mes vadiname ne statinį metodą naudodami klasės objektą ( st.multiply(2, 2)). Tačiau mes vadiname statinį metodą naudodami klasės pavadinimą ( StaticTest.add(2, 3)).

Statiniai kintamieji

„Java“, kai mes kuriame klasės objektus, tada kiekvienas objektas turės savo visų klasės kintamųjų kopijas. Pavyzdžiui,

 class Test ( // regular variable int age; ) class Main ( // create instances of Test Test test1 = new Test(); Test test2 = new Test(); )

Čia tiek objektai test1, tiek test2 turės atskiras kintamo amžiaus kopijas. Jie skiriasi vienas nuo kito.

Tačiau, jei skelbsime, kad kintamasis yra statinis, visi klasės objektai turi tą patį statinį kintamąjį. Taip yra todėl, kad kaip ir statiniai metodai, statiniai kintamieji taip pat yra susieti su klase. Ir mums nereikia kurti klasės objektų, kad galėtume pasiekti statinius kintamuosius. Pavyzdžiui,

 class Test ( // static variable static int age; ) class Main ( // access the static variable Test.age = 20; )

Čia matome, kad prieiname prie kitos klasės statinio kintamojo naudodami klasės pavadinimą.

2 pavyzdys: „Java“ statiniai ir nestatiniai kintamieji

 class Test ( // static variable static int max = 10; // non-static variable int min = 5; ) public class Main ( public static void main(String() args) ( Test obj = new Test(); // access the non-static variable System.out.println("min + 1 = " + (obj.min + 1)); // access the static variable System.out.println("max + 1 = " + (Test.max + 1)); ) )

Išvestis :

 min + 1 = 6 maks. + 1 = 11

Pirmiau pateiktoje programoje mes klasėje „Test“ deklaravome nestatinį kintamąjį pavadinimu min ir statinį kintamąjį, pavadintą max.

Pagrindinės klasės viduje galime pamatyti, kad mes vadiname ne statinį kintamąjį naudodami klasės objektą ( obj.min + 1). Tačiau mes vadiname statinį kintamąjį naudodami klasės pavadinimą ( Test.max + 1).

Pastaba : „Java“ statiniai kintamieji naudojami retai. Vietoj to naudojamos statinės konstantos. Šios statinės konstantos apibrėžiamos pagal static finalraktinį žodį ir pateikiamos didžiosiomis raidėmis. Štai kodėl kai kurie žmonės nori naudoti didžiosios raidės ir statiniams kintamiesiems.

Prieiga prie statinių kintamųjų ir metodų klasėje

Prieiname prie statinio kintamojo iš kitos klasės. Taigi, norėdami jį pasiekti, naudojome klasės pavadinimą. Tačiau, jei norime pasiekti statinį narį iš klasės vidaus, jį galima pasiekti tiesiogiai. Pavyzdžiui,

 public class Main ( // static variable static int age; // static method static void display() ( System.out.println("Static Method"); ) public static void main(String() args) ( // access the static variable age = 30; System.out.println("Age is " + age); // access the static method display(); ) )

Išvestis :

 Amžius yra 30 Statinis metodas

Čia mes galime tiesiogiai pasiekti statinį kintamąjį ir metodą nenaudodami klasės pavadinimo. Taip yra todėl, kad statiniai kintamieji ir metodai pagal nutylėjimą yra vieši. Kadangi prieiname iš tos pačios klasės, neturime nurodyti klasės pavadinimo.

Statiniai blokai

„Java“ programoje statiniai blokai naudojami statiniams kintamiesiems inicializuoti. Pavyzdžiui,

 class Test ( // static variable static int age; // static block static ( age = 23; ) )

Čia galime pamatyti, kad naudojome statinį bloką su sintakse:

 static ( // variable initialization )

The static block is executed only once when the class is loaded in memory. The class is loaded if either the object of the class is requested in code or the static members are requested in code.

A class can have multiple static blocks and each static block is executed in the same sequence in which they have been written in a program.

Example 3: Use of static block in java

 class Main ( // static variables static int a = 23; static int b; static int max; // static blocks static ( System.out.println("First Static block."); b = a * 4; ) static ( System.out.println("Second Static block."); max = 30; ) // static method static void display() ( System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("max = " + max); ) public static void main(String args()) ( // calling the static method display(); ) )

Output:

 First Static block. Second Static block. a = 23 b = 92 max = 30

In the above program. as soon as the Main class is loaded,

  • The value of a is set to 23.
  • The first static block is executed. Hence, the string First Static block is printed and the value of b is set to a * 4.
  • The second static block is executed. Hence, the string Second Static block is printed and the value of max is set to 30.
  • Galiausiai, display()vykdomi metodo spausdinimo teiginiai .

Lizdinė statinė klasė

„Java“ galime klasę paskelbti kitos klasės viduje. Tokios klasės yra žinomos kaip įdėtos klasės. Įdėtos klasės yra dviejų tipų:

  • Statinės įdėtos klasės
  • Nestatinės įdėtos klasės

Pavyzdžiui,

 class OuterClass ( // static nested class static class NestedClass (… ) // non-static nested class class InnerClass (… ) )

Norėdami sužinoti daugiau, apsilankykite „Java Nested“ klasėje.

Įdomios straipsniai...