Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Ключевое слово static в Java
static — это ключевое слово в Java, которое используется для создания переменных и методов уровня класса, а не уровня экземпляра. Это один из самых важных модификаторов в Java.
Основное назначение
static обозначает, что переменная или метод принадлежит классу, а не конкретному объекту. Это означает, что все экземпляры класса делят одно значение или метод.
1. Static переменные (поля класса)
public class Counter {
private static int count = 0; // Статическая переменная
private int id;
public Counter() {
count++; // Увеличиваем общий счётчик для всех экземпляров
this.id = count;
}
public static int getCount() {
return count;
}
}
// Использование
Counter c1 = new Counter();
Counter c2 = new Counter();
Counter c3 = new Counter();
System.out.println(Counter.getCount()); // 3
Особенности:
- Инициализируется один раз при загрузке класса
- Всем экземплярам доступна одна переменная
- Доступна через имя класса: ClassName.field
- Особенно полезна для констант и счётчиков
2. Static методы
public class MathUtils {
public static int add(int a, int b) {
return a + b;
}
public static double calculateTax(double amount) {
return amount * 0.13;
}
}
// Использование — вызов через класс, без создания объекта
int result = MathUtils.add(5, 3);
double tax = MathUtils.calculateTax(1000);
Особенности:
- Не требуют создания объекта класса
- Не могут использовать this или non-static поля
- Полезны для утилит и вспомогательных функций
- Переопределение (override) невозможно, но может быть скрытие (hiding)
3. Static блоки инициализации
public class Configuration {
private static String dbUrl;
private static int maxConnections;
// Статический блок инициализации
static {
System.out.println("Инициализация Configuration класса");
dbUrl = "jdbc:mysql://localhost:3306/db";
maxConnections = 100;
}
}
Выполняется один раз при загрузке класса, полезен для сложной инициализации.
4. Static вложенные классы
public class Outer {
private static int staticField = 10;
public static class Inner {
public void printStatic() {
System.out.println("Static field: " + staticField);
}
}
}
// Создание без экземпляра Outer
Outer.Inner inner = new Outer.Inner();
inner.printStatic();
Практические применения
Константы:
public class Constants {
public static final double PI = 3.14159;
public static final String APP_NAME = "MyApp";
public static final int MAX_USERS = 1000;
}
Утилиты:
public class StringUtils {
public static String capitalize(String str) {
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
public static boolean isEmpty(String str) {
return str == null || str.trim().isEmpty();
}
}
Singleton паттерн:
public class Logger {
private static Logger instance;
private Logger() {}
public static Logger getInstance() {
if (instance == null) {
instance = new Logger();
}
return instance;
}
}
Когда использовать static
✅ Для констант ✅ Для утилит функций ✅ Для счётчиков на уровне класса ✅ Для Singleton реализации ✅ Для factory методов
❌ Не злоупотреблять для общего состояния ❌ Избегать static в многопоточных приложениях без синхронизации ❌ Не использовать вместо объектно-ориентированного подхода
Понимание static критично для правильной работы с Java и организации кода на уровне класса.