Java statikus kulcsszó (példákkal)

Ebben az oktatóanyagban a Java statikus kulcsszaváról, a statikus módszerekről, a statikus változókról és a statikus blokkokról a példák segítségével tanulhatunk meg.

Mi a statikus kulcsszó a Java-ban?

Ha Java-ban szeretnénk hozzáférni az osztály tagjaihoz, először létre kell hoznunk az osztály egy példányát. De lesznek olyan helyzetek, amikor változók létrehozása nélkül szeretnénk hozzáférni az osztály tagjaihoz.

Ilyen esetekben használhatjuk a statickulcsszót a Java-ban. Ha anélkül szeretnénk hozzáférni az osztály tagjaihoz, hogy létrehoznánk az osztály egy példányát, akkor statikusnak kell nyilvánítanunk az osztály tagjait.

A MathJava osztályban szinte minden tagja statikus. Tehát hozzáférhetünk tagjaihoz anélkül, hogy létrehoznánk a Math osztály példányait. Például,

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

Kimenet :

 -12 = 12 abszolút értéke PI értéke 3,141592653589793 E értéke 2,718281828459045 2 2 = 4,0

A fenti példában nem hoztunk létre az Mathosztály egyetlen példányát . De képesek vagyunk elérni a módszerek: abs()és pow()és változók: PIés E.

Lehetséges, mert az Mathosztály módszerei és változói statikusak.

Statikus módszerek

A statikus módszereket osztálymódszereknek is nevezik. Ennek oka, hogy a statikus módszer az osztályhoz tartozik, nem pedig az osztály objektumához.

A statikus módszereket pedig közvetlenül meghívhatjuk az osztálynév használatával. Például,

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

Itt láthatjuk, hogy a statikus módszer közvetlenül elérhető más osztályokból az osztálynév használatával.

Minden Java programban deklaráltuk a mainmódszert static. Ennek oka, hogy a program futtatásához a JVM-nek képesnek kell lennie a fő módszer meghívására a kezdeti szakaszban, amikor a memóriában nincsenek objektumok.

1. példa: Java statikus és nem statikus módszerek

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

Kimenet :

 2 * 2 = 4 2 + 3 = 5

A fenti programban deklaráltunk egy nem statikus multiply()és egy add()osztályon belül megnevezett statikus metódust StaticTest.

A Main osztály belsejében láthatjuk, hogy a nem statikus metódust hívjuk meg az osztály ( st.multiply(2, 2)) objektumának felhasználásával . A statikus metódust azonban az osztálynév ( StaticTest.add(2, 3)) használatával hívjuk meg .

Statikus változók

A Java-ban, amikor egy osztály objektumait készítjük, akkor minden objektumnak meg lesz a saját másolata az osztály összes változójából. Például,

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

Itt mind a test1, mind a test2 objektumoknak külön példányai lesznek a változó korról. És különböznek egymástól.

Ha azonban egy változót statikusnak nyilvánítunk, akkor az osztály összes objektumának ugyanaz a statikus változója. Ugyanis a statikus módszerekhez hasonlóan a statikus változók is társulnak az osztályhoz. És a statikus változók eléréséhez nem kell az osztály objektumait létrehoznunk. Például,

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

Itt láthatjuk, hogy a statikus változóhoz a másik osztályból az osztály nevét használjuk.

2. példa: Java statikus és nem statikus változók

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

Kimenet :

 min + 1 = 6 max + 1 = 11

A fenti programban deklaráltunk egy min nevű statikus változót és egy max nevű statikus változót a Test osztályon belül.

A Main osztály belsejében láthatjuk, hogy a nem statikus változót az osztály ( obj.min + 1) objektumával hívjuk meg . A statikus változót azonban az osztálynév ( Test.max + 1) használatával hívjuk meg .

Megjegyzés : A statikus változókat ritkán használják a Java-ban. Ehelyett a statikus állandókat használják. Ezeket a statikus állandókat static finalkulcsszóval határozzuk meg, és nagybetűvel ábrázoljuk. Éppen ezért egyesek inkább nagybetűket használnak statikus változókhoz is.

Statikus változók és módszerek elérése az osztályon belül

Egy másik osztályból hozzáférünk a statikus változóhoz. Ezért az osztály nevét használtuk a hozzáféréshez. Ha azonban a statikus tagot az osztály belsejéből szeretnénk elérni, akkor az közvetlenül elérhető. Például,

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

Kimenet :

 Az életkor 30 Statikus módszer

Itt közvetlenül elérhetjük a statikus változót és a módszert anélkül, hogy használnánk az osztály nevét. Ennek oka, hogy a statikus változók és módszerek alapértelmezés szerint nyilvánosak. És mivel ugyanabból az osztályból érkezünk, nem kell megadnunk az osztály nevét.

Statikus blokkok

A Java-ban statikus blokkokat használnak a statikus változók inicializálására. Például,

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

Itt láthatjuk, hogy statikus blokkot használtunk a szintaxissal:

 static ( // variable initialization )

A statikus blokkot csak egyszer hajtják végre, amikor az osztály be van töltve a memóriába. Az osztály akkor töltődik be, ha vagy az osztály objektumát kódban kérik, vagy a statikus tagokat kódban kérik.

Egy osztálynak több statikus blokkja lehet, és mindegyik statikus blokkot ugyanabban a sorrendben hajtják végre, ahogyan egy programban írták őket.

3. példa: Statikus blokk használata a java-ban

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

Kimenet :

Első statikus blokk. Második statikus blokk. a = 23 b = 92 max = 30

A fenti programban. amint a Fő osztály betöltődik,

  • Az érték egy van állítva 23.
  • Az első statikus blokk végrehajtásra kerül. Ezért a karaktersorozat First Static blockkinyomtatásra kerül, és b értéke értéke a * 4.
  • A második statikus blokk végrehajtásra kerül. Ezért a karaktersorozat ki Second Static blockvan nyomtatva, és a max értéke értéke 30.
  • És végül a metódus belsejében lévő nyomtatott utasítások display()végrehajtásra kerülnek.

Beágyazott statikus osztály

A Java-ban osztályt deklarálhatunk egy másik osztályon belül. Az ilyen osztályokat beágyazott osztályoknak nevezik. A beágyazott osztályok 2 típusból állnak:

  • Statikus beágyazott osztályok
  • Nem statikus beágyazott osztályok

Például,

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

További információkért keresse fel a Java Nested osztályt.

érdekes cikkek...