Статична кључна реч Јава (са примерима)

У овом упутству ћемо научити о статичкој кључној речи Јава заједно са статичким методама, статичким променљивим и статичким блоковима уз помоћ примера.

Шта је статична кључна реч у Јави?

У Јави, ако желимо да приступимо члановима класе, прво морамо створити инстанцу класе. Али, биће ситуација у којима желимо да приступимо члановима класе без стварања било каквих променљивих.

У тим ситуацијама можемо користити staticкључну реч у Јави. Ако желимо да приступимо члановима класе без стварања инстанце класе, морамо да прогласимо чланове класе статичним.

MathКласа у Јави има скоро свих њених чланова статична. Дакле, можемо приступити њеним члановима без стварања инстанци класе Матх. На пример,

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

Излаз :

 Апсолутна вредност -12 = 12 Вредност ПИ = 3,141592653589793 Вредност Е = 2,718281828459045 2 2 = 4,0

У горњем примеру нисмо креирали ниједну инстанцу Mathкласе. Али ми смо у могућности да приступимо његовим методама: abs()и pow()и променљивим: PIи E.

Могуће је јер су методе и променљиве Mathкласе статичне.

Статичке методе

Статичке методе називају се и методама класе. То је зато што статички метод припада класи, а не њеном објекту.

А ми се можемо позивати на статичке методе директно користећи име класе. На пример,

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

Овде можемо видети да се статичкој методи може приступити директно из других класа користећи име класе.

У сваком Јава програму декларисали смо mainметод static. То је зато што би за покретање програма ЈВМ требао бити у могућности да позове главни метод током почетне фазе у којој у меморији не постоје објекти.

Пример 1: Јава статичке и нестатичне методе

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

Излаз :

 2 * 2 = 4 2 + 3 = 5

У горњем програму смо прогласили не-статичку методу именовану multiply()и статичку методу именовану add()унутар класе StaticTest.

Унутар класе Маин можемо видети да позивамо не-статичку методу користећи објекат класе ( st.multiply(2, 2)). Међутим, ми позивамо статички метод користећи име класе ( StaticTest.add(2, 3)).

Статичке променљиве

У Јави, када креирамо објекте класе, тада ће сваки објекат имати своју копију свих променљивих класе. На пример,

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

Овде ће и објекти тест1 и тест2 имати одвојене копије променљиве старости. И, они се разликују једни од других.

Међутим, ако променљиву прогласимо статичком, сви објекти класе деле исту статичку променљиву. То је зато што су попут статичких метода, статичке променљиве такође повезане са класом. И, не треба да креирамо објекте класе за приступ статичким променљивим. На пример,

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

Овде можемо видети да приступамо статичкој променљивој из друге класе користећи име класе.

Пример 2: Јава статичке и нестатичке променљиве

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

Излаз :

 мин + 1 = 6 мак + 1 = 11

У горе наведеном програму декларирали смо нестатичну променљиву названу мин и статичку променљиву названу мак унутар класе Тест.

Унутар класе Маин можемо видети да позивамо не-статичку променљиву користећи објекат класе ( obj.min + 1). Међутим, ми позивамо статичку променљиву користећи име класе ( Test.max + 1).

Напомена : Статичке променљиве се ретко користе у Јави. Уместо тога, користе се статичке константе. Ове статичке константе су дефинисане static finalкључном речи и представљене великим словима. Због тога неки људи радије користе велика слова и за статичке променљиве.

Приступ статичким променљивим и методама унутар класе

Приступамо статичкој променљивој из друге класе. Стога смо користили име класе да бисмо му приступили. Међутим, ако желимо приступити статичном члану из класе, може му се приступити директно. На пример,

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

Излаз :

 Старост је 30 година. Статичка метода

Овде смо у могућности да приступимо статичкој променљивој и методи директно без коришћења имена класе. То је зато што су статичке променљиве и методе подразумевано јавне. А, пошто приступамо из исте класе, не морамо да наводимо име класе.

Статични блокови

У Јави се статички блокови користе за иницијализацију статичких променљивих. На пример,

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

Овде можемо видети да смо користили статички блок са синтаксом:

 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.
  • И на крају, display()извршавају се исписи унутар методе .

Угњежђена статичка класа

У Јави можемо декларирати класу унутар друге класе. Такве класе су познате као угнежђене класе. Угњеждене класе су 2 типа:

  • Статичне угнежђене класе
  • Нестатичне угнеждене класе

На пример,

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

Да бисте сазнали више, посетите Јава угнежђени разред.

Занимљиви Чланци...