Статичне ключове слово Java (з прикладами)

У цьому посібнику ми дізнаємося про ключове слово Java static разом із статичними методами, статичними змінними та статичними блоками за допомогою прикладів.

Що таке статичне ключове слово в Java?

У Java, якщо ми хочемо отримати доступ до членів класу, ми повинні спочатку створити екземпляр класу. Але траплятимуться ситуації, коли ми хочемо отримати доступ до учасників класу без створення змінних.

У таких ситуаціях ми можемо використовувати staticключове слово в Java. Якщо ми хочемо отримати доступ до членів класу без створення екземпляра класу, нам потрібно оголосити членів класу статичними.

У Mathкласі в Java майже всі його члени є статичними. Отже, ми можемо отримати доступ до його членів, не створюючи екземплярів класу 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 Значення PI = 3,141592653589793 Значення E = 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(); )

Тут ми бачимо, що статичний метод можна отримати безпосередньо з інших класів за допомогою імені класу.

У кожній програмі Java ми оголосили mainметод static. Це тому, що для запуску програми JVM повинен мати можливість викликати основний метод під час початкової фази, коли в пам'яті не існує об'єктів.

Приклад 1: Java статичні та нестатичні методи

 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.

Усередині класу Main ми бачимо, що ми викликаємо нестатичний метод, використовуючи об’єкт класу ( st.multiply(2, 2)). Однак ми викликаємо статичний метод, використовуючи ім'я класу ( StaticTest.add(2, 3)).

Статичні змінні

У Java, коли ми створюємо об'єкти класу, тоді кожен об'єкт матиме власну копію всіх змінних класу. Наприклад,

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

Тут і об’єкти test1, і test2 матимуть окремі копії змінної вікової категорії. І, вони відрізняються один від одного.

Однак, якщо ми оголошуємо змінну статичною, усі об'єкти класу мають однакову статичну змінну. Це тому, що як і статичні методи, статичні змінні також пов’язані з класом. І нам не потрібно створювати об’єкти класу для доступу до статичних змінних. Наприклад,

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

Тут ми бачимо, що ми отримуємо доступ до статичної змінної з іншого класу за допомогою імені класу.

Приклад 2: Java статичні та нестатичні змінні

 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

У наведеній вище програмі ми оголосили нестатичну змінну з назвою min та статичну змінну з назвою max всередині класу Test.

Усередині класу Main ми бачимо, що ми викликаємо нестатичну змінну, використовуючи об’єкт класу ( obj.min + 1). Однак ми викликаємо статичну змінну, використовуючи ім'я класу ( Test.max + 1).

Примітка : Статичні змінні рідко використовуються в Java. Натомість використовуються статичні константи. Ці статичні константи визначаються 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 років. Статичний метод

Тут ми можемо отримати доступ до статичної змінної та методу безпосередньо без використання імені класу. Це тому, що статичні змінні та методи за замовчуванням є загальнодоступними. І оскільки ми отримуємо доступ з одного класу, нам не потрібно вказувати назву класу.

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

У Java статичні блоки використовуються для ініціалізації статичних змінних. Наприклад,

 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()виконуються оператори друку всередині методу .

Вкладений статичний клас

У Java ми можемо оголосити клас всередині іншого класу. Такі класи відомі як вкладені класи. Вкладені класи мають 2 типи:

  • Статичні вкладені класи
  • Нестатичні вкладені класи

Наприклад,

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

Щоб дізнатись більше, відвідайте клас вкладеного Java.

Цікаві статті...