Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Ключевое слово static в Java: переменные, методы и блоки — практические примеры

В Java ключевое слово static встречается в трех различных контекстах: статические переменные, статические методы и статические блоки. Каждый играет уникальную роль в жизненном цикле класса и его экземпляров.

Статические переменные в Java

Статическая переменная — это поле уровня класса, которое инициализируется только один раз при первой загрузке класса. В отличие от переменных экземпляра, единственная копия статической переменной совместно используется всеми объектами этого класса.

Синтаксис:

public static int count;

Статические методы в Java

Статические методы принадлежат классу, а не конкретному экземпляру. Их можно вызывать без создания объекта, и они могут обращаться только к статическим данным.

Все методы main являются статическими, чтобы JVM мог запустить приложение до создания каких-либо объектов.

Практический пример: использование статических переменных и методов

Ниже приведена простая программа, демонстрирующая, как статический счетчик совместно используется несколькими объектами Student.

public class Demo {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.showData();
        Student s2 = new Student();
        s2.showData();
        // Student.b++; // раскомментируйте, чтобы изменить счетчик
        // s1.showData();
    }
}

class Student {
    int a; // переменная экземпляра, по умолчанию 0
    static int b; // статический счетчик, инициализируется 0 один раз

    Student() {
        b++; // увеличиваем счетчик при каждом создании Student
    }

    public void showData() {
        System.out.println("Value of a = " + a);
        System.out.println("Value of b = " + b);
    }
}

Скомпилируйте и запустите с java Demo, чтобы увидеть следующий вывод:

Ключевое слово static в Java: переменные, методы и блоки — практические примеры

На диаграмме ниже показано, как создаются ссылочные переменные и объекты, и как статическая переменная b совместно используется экземплярами.

Ключевое слово static в Java: переменные, методы и блоки — практические примеры

Для доступа к статической переменной извне класса используйте ClassName.variableName:

Student.b++; // увеличивает общий счетчик
s1.showData(); // покажет обновленное значение b

Попытка обратиться к переменной экземпляра из статического контекста приводит к ошибке компиляции:

error: non-static variable a cannot be referenced from a static context
a++;

Это происходит потому, что статические методы не могут напрямую взаимодействовать с полями экземпляра.

Статические блоки в Java

Статический блок — это специальный блок кода, который выполняется один раз при первой загрузке класса в JVM. Он идеален для инициализации статических полей, требующих более сложной логики, чем простое присваивание.

class Test {
    static int a;
    static int b;
    static {
        a = 10;
        b = 20;
    }
}

Запуск следующей программы демонстрирует вывод статического блока:

public class Demo {
    static int a;
    static int b;
    static {
        a = 10;
        b = 20;
    }
    public static void main(String[] args) {
        System.out.println("Value of a = " + a);
        System.out.println("Value of b = " + b);
    }
}

Вывод:

Value of a = 10
Value of b = 20

java

  1. Ключевое слово final в Java: переменные, методы и классы
  2. Оператор instanceof в Java: полное руководство с примерами
  3. Статические вложенные классы в Java: использование, отличия и примеры
  4. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  5. Паттерн Singleton в Java: как реализовать и безопасно использовать
  6. Рефлексия в Java: инспекция классов, методов и полей во время выполнения
  7. Обработка исключений в Java: try, catch, finally, throw и throws
  8. Освоение Java ObjectOutputStream: сериализация, методы и практические примеры
  9. Освоение Java Generics: создание переиспользуемого, типобезопасного кода
  10. Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление