Ответ
Ключевое слово static в Java указывает, что член класса (поле или метод) принадлежит самому классу, а не его экземплярам (объектам). Это означает, что статический член существует в единственном экземпляре и является общим для всех объектов этого класса.
Основные случаи использования:
-
Статические поля (переменные класса): Общая память для всех объектов. Часто используется для констант, счётчиков или общих настроек.
public class AppConfig { public static final String APP_NAME = "MyApp"; // Константа public static int activeUserCount = 0; // Счётчик } -
Статические методы: Могут быть вызваны без создания объекта класса. Не могут напрямую обращаться к нестатическим полям и методам. Часто используются в утилитарных классах (например,
Math.sqrt()).public class StringUtils { public static boolean isEmpty(String str) { return str == null || str.trim().isEmpty(); } } // Вызов: StringUtils.isEmpty("text"); -
Статический блок инициализации: Выполняется один раз при загрузке класса в память.
public class DatabaseConnector { static { // Инициализация драйверов БД или статических ресурсов System.out.println("Class DatabaseConnector loaded."); } }
Связь с тестированием: Понимание static критично для тестирования, так как статические поля создают общее состояние (shared state) между тестами. Это может приводить к недетерминированным результатам, если состояние не сбрасывается. При написании модульных тестов (например, с JUnit) для классов, использующих статику, часто применяются паттерны вроде Dependency Injection или инструменты вроде PowerMock для изоляции и мокирования статических вызовов.