Что делает ключевое слово `static` в Java?

«Что делает ключевое слово `static` в Java?» — вопрос из категории Основы программирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Основные особенности и применение:

  • Статические члены загружаются в память при первой загрузке класса JVM и существуют в единственном экземпляре.
  • К ним можно обращаться без создания объекта класса, используя имя класса: ClassName.staticMember.

1. Статическое поле (переменная класса): Общая для всех объектов класса. Часто используется для счетчиков, констант или общих настроек.

class Employee {
    private static int employeeCount = 0; // Общий счетчик для всех сотрудников
    private String name;

    public Employee(String name) {
        this.name = name;
        employeeCount++; // Увеличиваем общий счетчик при создании ЛЮБОГО объекта
    }

    public static int getEmployeeCount() {
        return employeeCount;
    }
}
// Использование
Employee emp1 = new Employee("Анна");
Employee emp2 = new Employee("Борис");
System.out.println(Employee.getEmployeeCount()); // Вывод: 2

2. Статический метод: Может обращаться только к статическим полям и методам. Не может использовать this.

class MathUtils {
    public static double square(double x) {
        return x * x;
    }
}
// Вызов без объекта
double result = MathUtils.square(5.0);

3. Статический блок инициализации: Выполняется один раз при загрузке класса.

class Config {
    static Properties props;
    static {
        props = new Properties();
        // Загрузка настроек из файла
    }
}

4. Статический вложенный класс: Вложенный класс, не имеющий доступа к нестатическим членам внешнего класса.