Statična ključna beseda Java (s primeri)

V tej vadnici bomo s pomočjo primerov spoznali ključno besedo Java static skupaj s statičnimi metodami, statičnimi spremenljivkami in statičnimi bloki.

Kaj je statična ključna beseda v Javi?

Če želimo v Javi dostopati do članov razreda, moramo najprej ustvariti primerek razreda. Bodo pa situacije, ko želimo dostopati do članov predavanj, ne da bi ustvarili kakršne koli spremenljivke.

V teh primerih lahko uporabimo staticključno besedo v Javi. Če želimo dostopati do članov razreda, ne da bi ustvarili primerek razreda, moramo člane razreda razglasiti za statične.

MathRazred v Javi je skoraj vse svoje člane statična. Tako lahko dostopamo do njegovih članov, ne da bi ustvarili primerke razreda Math. Na primer

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

Izhod :

 Absolutna vrednost -12 = 12 Vrednost PI = 3,141592653589793 Vrednost E = 2,718281828459045 2 2 = 4,0

V zgornjem primeru nismo ustvarili nobenega primerka Mathrazreda. Vendar imamo dostop do njegovih metod: abs()in pow()in spremenljivk: PIin E.

Možno je, ker so metode in spremenljivke Mathrazreda statične.

Statične metode

Statične metode se imenujejo tudi metode razredov. To je zato, ker statična metoda pripada razredu in ne predmetu razreda.

In lahko prikličemo statične metode neposredno z imenom razreda. Na primer

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

Tu lahko vidimo, da je do statične metode mogoče dostopati neposredno iz drugih razredov z uporabo imena razreda.

V vsakem programu Java smo razglasili mainmetodo static. To je zato, ker bi moral JVM za zagon programa priklicati glavno metodo v začetni fazi, ko v pomnilniku ne obstajajo predmeti.

Primer 1: Java statične in 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)); ) )

Izhod :

 2 * 2 = 4 2 + 3 = 5

V zgornjem programu smo razglasili nestatično metodo z imenom multiply()in statično metodo, imenovano add()znotraj razreda StaticTest.

V razredu Main lahko vidimo, da prikličemo nestatično metodo z uporabo predmeta razreda ( st.multiply(2, 2)). Vendar pa prikličemo statično metodo z imenom razreda ( StaticTest.add(2, 3)).

Statične spremenljivke

V Java, ko ustvarimo predmete razreda, bo imel vsak predmet svojo kopijo vseh spremenljivk razreda. Na primer

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

Tu imata tako predmeta test1 kot test2 ločeni kopiji spremenljive starosti. In med seboj se razlikujejo.

Če pa spremenljivko razglasimo za statično, imajo vsi predmeti razreda isto statično spremenljivko. Tako kot statične metode so tudi statične spremenljivke povezane s razredom. Za dostop do statičnih spremenljivk nam ni treba ustvariti predmetov razreda. Na primer

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

Tu lahko vidimo, da do statične spremenljivke iz drugega razreda dostopamo z imenom razreda.

Primer 2: Java statične in nestatične spremenljivke

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

Izhod :

 min + 1 = 6 max + 1 = 11

V zgornjem programu smo znotraj razreda Test razglasili nestatično spremenljivko z imenom min in statično spremenljivko z imenom max.

V razredu Main lahko vidimo, da prikličemo nestatično spremenljivko z uporabo predmeta razreda ( obj.min + 1). Statično spremenljivko pa prikličemo z imenom razreda ( Test.max + 1).

Opomba : Statične spremenljivke se v Javi redko uporabljajo. Namesto tega se uporabljajo statične konstante. Te statične konstante so definirane s static finalključno besedo in so predstavljene z velikimi črkami. Zato nekateri ljudje raje uporabljajo velike črke tudi za statične spremenljivke.

Dostopajte do statičnih spremenljivk in metod znotraj razreda

Do statične spremenljivke dostopamo iz drugega razreda. Zato smo za dostop do njega uporabili ime predavanja. Če pa želimo statični član dostopati od znotraj razreda, je do njega mogoče neposredno dostopati. Na primer

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

Izhod :

 Starost je 30 Statična metoda

Tu imamo neposreden dostop do statične spremenljivke in metode, ne da bi uporabili ime razreda. Statične spremenljivke in metode so privzeto javne. In ker dostopamo iz istega razreda, nam ni treba določiti imena razreda.

Statični bloki

V Javi se statični bloki uporabljajo za inicializacijo statičnih spremenljivk. Na primer

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

Tu lahko vidimo, da smo s sintakso uporabili statični blok:

 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.
  • In na koncu display()se izvršijo izjave za tiskanje znotraj metode .

Vgnezdeni statični razred

V Javi lahko prijavimo razred znotraj drugega razreda. Takšni razredi so znani kot ugnezdeni razredi. Vgnezdeni razredi so dveh vrst:

  • Statični ugnezdeni razredi
  • Nestatični ugnezdeni razredi

Na primer

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

Če želite izvedeti več, obiščite Java ugnezdeni razred.

Zanimive Članki...