Ответ
Ключевое слово 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. Статический вложенный класс: Вложенный класс, не имеющий доступа к нестатическим членам внешнего класса.