Java staatiline märksõna (koos näidetega)

Selles õpetuses õpime näidete abil Java staatilist märksõna koos staatiliste meetodite, staatiliste muutujate ja staatiliste plokkidega.

Mis on Java staatiline märksõna?

Kui soovime Java-s juurde pääseda klassi liikmetele, peame kõigepealt looma klassi eksemplari. Kuid on olukordi, kus soovime pääseda klassi liikmetele juurde muutujaid loomata.

Nendes olukordades saame staticJava-s märksõna kasutada . Kui tahame klassi liikmetele juurde pääseda klassi eksemplari loomata, peame klassi liikmed staatiliseks tunnistama.

MathKlassi Java on peaaegu kõik selle liikmed staatiline. Niisiis, pääseme selle liikmetele juurde, matemaatika klassi eksemplare loomata. Näiteks,

 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)); ) )

Väljund :

 Absoluutväärtus -12 = 12 PI väärtus = 3,141592653589793 Väärtus E = 2,718281828459045 2 2 = 4,0

Ülaltoodud näites pole me Mathklassi ühtegi eksemplari loonud . Aga me oleme pääse oma meetodid: abs()ja pow()ja muutujad: PIja E.

See on võimalik, kuna Mathklassi meetodid ja muutujad on staatilised.

Staatilised meetodid

Staatilisi meetodeid nimetatakse ka klassimeetoditeks. Sellepärast, et staatiline meetod kuulub pigem klassi kui klassi objekti.

Ja me võime staatilisi meetodeid otse kasutada, kasutades klassi nime. Näiteks,

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

Siit näeme, et staatilisele meetodile pääseb klassi nime kasutades otse juurde teistest klassidest.

Igas Java-programmis oleme mainmeetodi deklareerinud static. Sellepärast, et programmi käivitamiseks peaks JVM algfaasis saama kasutada peamist meetodit, kui mälus pole ühtegi objekti.

Näide 1: Java staatilised ja mittestaatilised meetodid

 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)); ) )

Väljund :

 2 * 2 = 4 2 + 3 = 5

Ülaltoodud programmis oleme klassi sees deklareerinud mittestaatilise meetodi multiply()ja staatilise meetodi .add()StaticTest

Põhiklassi sees näeme, et kutsume mitte staatilist meetodit klassi objekti ( st.multiply(2, 2)) abil. Kuid me kutsume staatilist meetodit, kasutades klassi nime ( StaticTest.add(2, 3)).

Staatilised muutujad

Kui loome Java objektides klassi objekte, on igal objektil oma koopia kõikidest klassi muutujatest. Näiteks,

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

Siin on nii objektidel test1 kui test2 muutuva vanuse eraldi koopiad. Ja nad erinevad üksteisest.

Kui kuulutame muutuja staatiliseks, on kõigil klassi objektidel sama staatiline muutuja. Sellepärast, et nagu staatilised meetodid, on ka staatilised muutujad klassiga seotud. Staatiliste muutujate juurde pääsemiseks pole meil vaja luua klassi objekte. Näiteks,

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

Siin näeme, et pääseme teise klassi staatilisele muutujale juurde, kasutades klassi nime.

Näide 2: Java staatilised ja mittestaatilised muutujad

 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)); ) )

Väljund :

 min + 1 = 6 max + 1 = 11

Eespool nimetatud programmis oleme klassi Test kuulutanud mittestaatilise muutuja nimega min ja staatilise muutuja nimega max.

Põhiklassi sees näeme, et kutsume mittestaatilist muutujat klassi objekti ( obj.min + 1) abil. Staatilist muutujat kutsume siiski klassi nime ( Test.max + 1) abil.

Märkus . Staatilisi muutujaid kasutatakse Java-s harva. Selle asemel kasutatakse staatilisi konstante. Need staatilised konstandid on määratletud static finalmärksõna järgi ja kujutatud suurtähtedega. Seetõttu eelistavad mõned inimesed kasutada staatiliste muutujate jaoks ka suurtähti.

Juurdepääs klassi staatilistele muutujatele ja meetoditele

Staatilisele muutujale pääseme juurde teisest klassist. Seega oleme sellele juurdepääsu saamiseks kasutanud klassi nime. Kui aga tahame staatilisele liikmele juurde pääseda klassi seest, pääseb sellele otse juurde. Näiteks,

 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(); ) )

Väljund :

 Vanus on 30 Staatiline meetod

Siin on meil juurdepääs staatilisele muutujale ja meetodile otse, ilma klassi nime kasutamata. Sellepärast, et staatilised muutujad ja meetodid on vaikimisi avalikud. Ja kuna meil on juurdepääs samast klassist, ei pea me klassi nime määrama.

Staatilised plokid

Java-s kasutatakse staatilisi muutujaid initsialiseerimiseks staatilisi plokke. Näiteks,

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

Siin näeme, et oleme kasutanud süntaksiga staatilist plokki:

 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.
  • Ja lõpuks display()täidetakse meetodi sees olevad väljatrükid .

Pesastatud staatiline klass

Java keeles võime klassi kuulutada teise klassi sisse. Selliseid klasse nimetatakse pesastatud klassideks. Pesastatud klassid on kahte tüüpi:

  • Staatilised pesastatud klassid
  • Mittestaatilised pesastatud klassid

Näiteks,

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

Lisateabe saamiseks külastage Java pesastatud klassi.

Huvitavad Artiklid...