JavaRush /Java блог /Random UA /Кава-брейк #142. Яку роль Java грає ключове слово static?...

Кава-брейк #142. Яку роль Java грає ключове слово static?

Стаття з групи Random UA
Джерело: FreeCodeCamp Ключове слово static можна використовувати в різних частинах коду Java, таких як змінні, методи та статичні блоки. Сьогодні ми дізнаємося, як саме його можна застосовувати практично. Кава-брейк #142.  Яку роль Java грає ключове слово static?  - 1Основна мета використання ключового слова static у Java – економія пам'яті. Коли ми створюємо змінну в класі, до якої будуть звертатися інші класи, ми повинні спочатку створити екземпляр класу, а потім надати нове значення кожному екземпляру змінної. Це потрібно, щоб значення нових змінних були однакові всім нових класів/об'єктів. Але коли ми створюємо статичні змінні, їхнє значення залишається постійним у всіх інших класах і нам не потрібно створювати екземпляр для використання змінної. Таким чином, ми створюємо змінну один раз, тому пам'ять виділяється лише один раз. Ви краще зрозумієте це на кількох прикладах цієї статті.

Як створити статичну змінну в Java

Щоб зрозуміти, як використовувати ключове слово static під час створення змінних, давайте розглянемо звичайний спосіб створення змінних, загальних кожному за екземпляра класу.
class Student {
    String studentName;
    String course;
    String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();

        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";
        Student2.school = "freeCodeCamp";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
Пояснюю, що сталося у наведеному вище коді крок за кроком. Ми створабо клас Student з трьома змінними - studentName , course та school . Потім ми створабо два екземпляри класу Student :
Student Student1 = new Student();
Student Student2 = new Student();
Перший екземпляр — Student1 , який має доступ до змінних, створених у його класі, має такі значення:
Student1.studentName = "Ihechikara";
Student1.course = "Data Visualization";
Student1.school = "freeCodeCamp";
Другий екземпляр мав такі значення:
Student2.studentName = "John";
Student2.course = "Data Analysis with Python";
Student2.school = "freeCodeCamp";
Якщо придивитися, то можна виявити, що в обох учнів одна і та ж назва школи - "freeCodeCamp". Але що, якби нам довелося створити 100 учнів для однієї школи? Це означає, що ми ініціалізуватимемо змінну з одним і тим же значенням 100 разів, щоразу виділяючи нову пам'ять. Може для когось це і не проблема, але у великій кодовій базі це може сповільнити роботу програми. Щоб вирішити це питання, ми будемо використовувати ключове слово static для створення змінної школи . Після цього всі екземпляри класу можуть використовувати цю змінну. Приблизно так:
class Student {
    String studentName;
    String course;
    static String school;

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";
        Student1.school = "freeCodeCamp";


        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
У цьому коді ми створабо статичну змінну з іменем school . Зауважте, що ключове слово static передувало типу даних та імені змінної: static String school = "freeCodeCamp"; . Тепер, коли ми створюємо новий екземпляр нашого класу, нам не потрібно ініціалізувати змінну school для кожного екземпляра. У нашому коді ми надали значення змінної тільки в першому екземплярі, а потім воно було успадковано наступним екземпляром. Зверніть увагу, що зміна значення статичної змінної будь-де коду перевизначає значення в інших частинах коду, де воно було оголошено раніше. Таким чином, ви повинні використовувати ключове слово static тільки для змінних, які залишаються постійними в програмі. Ви також можете надати значення змінної при її створенні, щоб вам не потрібно було оголошувати її знову при створенні екземпляра класу: static String school = "freeCodeCamp"; . Ось що ви отримаєте, якщо використовувати цей метод:
class Student {
    String studentName;
    String course;
    static String school = "freeCodeCamp";

    public static void main(String[] args) {
        Student Student1 = new Student();
        Student Student2 = new Student();


        Student1.studentName = "Ihechikara";
        Student1.course = "Data Visualization";

        Student2.studentName = "John";
        Student2.course = "Data Analysis with Python";

        System.out.println(Student1.studentName + " " + Student1.course + " " + Student1.school + "\n");
        // Ihechikara Data Visualization freeCodeCamp
        System.out.println(Student2.studentName + " " + Student2.course + " " + Student2.school);
        // John Data Analysis with Python freeCodeCamp
    }
}
А зараз ви побачите, як ініціалізувати статичні змінні за допомогою статичних блоків.

Як створити статичний метод у Java

Перш ніж ми розглянемо приклад, ось деякі речі, які потрібно знати про статичні методи Java:
  • Статичні методи можуть отримувати доступ та змінювати лише статичні змінні.
  • Статичні методи можна викликати/використовувати без створення екземпляра класу.
Ось приклад, який допоможе вам це зрозуміти:
class EvenNumber {

    static int evenNumber;

    static void incrementBy2(){
        evenNumber = evenNumber + 2;
        System.out.println(evenNumber);
    }

    public static void main(String[] args) {
        incrementBy2(); // 2
        incrementBy2(); // 4
        incrementBy2(); // 6
        incrementBy2(); // 8
    }
}
У наведеному вище коді ми створабо ціле число ( evenNumber ) у класі з ім'ям EvenNumber . Наш статичний метод називається incrementBy2() . Цей метод збільшує значення цілого числа evenNumber і друкує його значення. Без створення екземпляра класу ми змогли викликати метод incrementBy2() у методі програми main . Щоразу, коли ми викликали метод, значення evenNumber збільшувалося на 2 і виводилося на друк. Також можна приєднати ім'я класу до методу, використовуючи запис через точку під час виклику методу: EvenNumber.incrementBy2(); . Кожен статичний метод належить класу, а чи не екземплярам класу.

Як створити статичний блок у Java

Статичні блоки Java схожі на конструктори. Ми можемо їх використовувати для ініціалізації статичних змінних, вони виконуються компілятором перед методом main .
class Block {

    static int year;

    static {
        year = 2022;
        System.out.println("This code block got executed first");
    }

    public static void main(String[] args) {

        System.out.println("Hello World");
        System.out.println(year);
    }
}
У коді вище ми створабо статичну цілісну змінну year . Потім ми ініціалізували її у статичному блоці:
static {
        year = 2022;
        System.out.println("This code block got executed first");
    }
Як ви бачите, статичний блок можна створити, використовуючи ключове слово static, за яким йдуть фігурні дужки. У статичному блоці нашого коду ми ініціалізували змінну year зі значенням 2022 року. Ми також роздрукували деякий текст — This code block got executed first. У методі main ми надрукували “Hello World” та статичну змінну year . У консолі код виконуватиметься в такому порядку:
This code block got executed first Hello World 2022
Це наочно демонструє, як код статичному блоці виконується першим перед методом main .

Висновок

У цій статті ми говорабо про ключове слово static у Java. Це ключове слово, яке в основному допомагає нам оптимізувати пам'ять програм, написаних на Java. Ми також побачабо, як створювати статичні змінні та методи на прикладах. Нарешті ми поговорабо про статичні блоки, які можна використовувати для ініціалізації статичних змінних. Статичні блоки виконуються перед основним способом. Вдалого кодування!
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ