> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/staticheskie-peremennye-metody-klassy.md).

# Статические переменные, методы, классы

1. **Статические переменные (static variables)**:
   * Статические переменные принадлежат классу, а не конкретным экземплярам этого класса. Они существуют в единственном экземпляре на уровне класса и разделяются между всеми экземплярами этого класса.
   * Обычно статические переменные используются для хранения данных, которые должны быть общими для всех экземпляров класса, или для данных, которые не должны изменяться во времени.
   * Статические переменные объявляются с использованием ключевого слова `static`.

Пример статической переменной:

```java
public class MyClass {
    static int count; // Статическая переменная
}
```

2. **Статические методы (static methods)**:
   * Статические методы принадлежат классу, а не конкретным экземплярам. Они могут быть вызваны без создания экземпляра класса.
   * Обычно статические методы используются для операций, которые не зависят от состояния конкретного объекта, и для утилитарных операций, доступных везде.
   * В статических методах нельзя обращаться к нестатическим полям или методам класса (за исключением других статических элементов).

Пример статического метода:

```java
public class MyClass {
    static void printMessage() { // Статический метод
        System.out.println("Hello, world!");
    }
}
```

3. **Статические классы (static classes)**:
   * Статические классы в Java могут быть вложенными в другие классы и иметь статические члены (переменные, методы).
   * Использование статических классов может помочь в организации кода и логической группировке связанных элементов.
   * Статический класс не может обращаться к нестатическим членам внешнего класса.

Пример статического вложенного класса:

```java
public class OuterClass {
    static class InnerStaticClass { // Статический вложенный класс
        static void printMessage() {
            System.out.println("Hello from InnerStaticClass!");
        }
    }
}
```
