Statična ključna riječ Java (s primjerima)

U ovom uputstvu uz primjere ćemo naučiti o Java ključnoj riječi static, zajedno sa statičkim metodama, statičkim varijablama i statičkim blokovima.

Što je statična ključna riječ u Javi?

U Javi, ako želimo pristupiti članovima klase, prvo moramo stvoriti instancu klase. Ali bit će situacija u kojima želimo pristupiti članovima razreda bez stvaranja bilo kakvih varijabli.

U tim situacijama možemo koristiti staticključnu riječ u Javi. Ako želimo pristupiti članovima klase bez stvaranja instance klase, moramo članove klase proglasiti statičkim.

MathKlasa u Javi je gotovo sve svoje članove statike. Dakle, možemo pristupiti njezinim članovima bez stvaranja instanci klase Math. Na primjer,

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

Izlaz :

 Apsolutna vrijednost -12 = 12 Vrijednost PI = 3,141592653589793 Vrijednost E = 2,718281828459045 2 2 = 4,0

U gornjem primjeru nismo stvorili nijedan primjerak Mathklase. Ali mi smo u mogućnosti pristupiti njegovim metodama: abs()i pow()i varijablama: PIi E.

Moguće je jer su metode i varijable Mathklase statične.

Statičke metode

Statičke metode nazivaju se i metodama klase. To je zato što statička metoda pripada klasi, a ne objektu klase.

A mi se možemo pozivati ​​na statičke metode izravno koristeći ime klase. Na primjer,

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

Ovdje možemo vidjeti da se statičkoj metodi može pristupiti izravno iz drugih klasa pomoću naziva klase.

U svakom Java programu deklarirali smo mainmetodu static. To je zato što bi za pokretanje programa JVM trebao moći pozvati glavnu metodu tijekom početne faze u kojoj u memoriji ne postoje objekti.

Primjer 1: Java statičke i nestatične metode

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

Izlaz :

 2 * 2 = 4 2 + 3 = 5

U gore navedenom programu proglasili smo ne-statičku metodu imenovanu multiply()i statičku metodu imenovanu add()unutar klase StaticTest.

Unutar klase Main možemo vidjeti da pozivamo ne-statičku metodu pomoću objekta klase ( st.multiply(2, 2)). Međutim, mi pozivamo statičku metodu pomoću naziva klase ( StaticTest.add(2, 3)).

Statičke varijable

U Javi, kada kreiramo objekte klase, tada će svaki objekt imati vlastitu kopiju svih varijabli klase. Na primjer,

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

Ovdje će i objekti test1 i test2 imati zasebne kopije promjenljive dobi. I, oni se međusobno razlikuju.

Međutim, ako varijablu proglasimo statičkom, svi objekti klase dijele istu statičku varijablu. To je zato što su poput statičkih metoda, statičke varijable također povezane s klasom. I, ne trebamo stvarati objekte klase za pristup statičkim varijablama. Na primjer,

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

Ovdje možemo vidjeti da pristupamo statičkoj varijabli iz druge klase pomoću naziva klase.

Primjer 2: Java statičke i nestatične varijable

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

Izlaz :

 min + 1 = 6 max + 1 = 11

U gornjem programu deklarirali smo nestatičnu varijablu nazvanu min i statičku varijablu nazvanu max unutar klase Test.

Unutar klase Main možemo vidjeti da pozivamo nestatičnu varijablu koristeći objekt klase ( obj.min + 1). Međutim, statičku varijablu pozivamo pomoću naziva klase ( Test.max + 1).

Napomena : Statičke varijable rijetko se koriste u Javi. Umjesto toga koriste se statičke konstante. Te statičke konstante definirane su static finalključnom riječi i predstavljene velikim slovima. Zbog toga neki ljudi radije koriste velika slova i za statičke varijable.

Pristup statičkim varijablama i metodama unutar Klase

Pristupamo statičkoj varijabli iz druge klase. Stoga smo za pristup koristili naziv klase. Međutim, ako želimo pristupiti statičnom članu iz klase, može mu se pristupiti izravno. Na primjer,

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

Izlaz :

 Starost je 30 godina. Statička metoda

Ovdje smo u mogućnosti izravno pristupiti statičkoj varijabli i metodi bez upotrebe naziva klase. To je zato što su statičke varijable i metode prema zadanim postavkama javne. A budući da pristupamo iz iste klase, ne moramo navesti naziv klase.

Statički blokovi

U Javi se statički blokovi koriste za inicijalizaciju statičkih varijabli. Na primjer,

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

Ovdje možemo vidjeti da smo koristili statički blok sa sintaksom:

 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.
  • I na kraju, display()izvršavaju se ispisi unutar metode .

Ugniježđena statička klasa

U Javi možemo deklarirati klasu unutar druge klase. Takve su klase poznate kao ugniježđene klase. Ugnježđene klase su 2 vrste:

  • Statični ugniježđeni razredi
  • Nestatične ugniježđene klase

Na primjer,

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

Da biste saznali više, posjetite Java ugniježđeni razred.

Zanimljivi članci...