Ключевое слово static
Ключевое слово static в Java означает, что поле, метод или вложенный класс принадлежит самому классу, а не какому-либо конкретному объекту. Это позволяет обращаться к статическим членам напрямую через имя класса, без создания экземпляра. Статические поля являются общими для всех объектов класса, а статические методы не могут обращаться к нестатическим полям и методам напрямую, так как не привязаны к конкретному объекту. В первом параметре, если речь идет о статическом методе, мы не передаем ссылку на объект (неявный this отсутствует), во втором параметре - обычные аргументы метода.
Синтаксис
// Статическое поле
static тип имяПоля;
// Статический метод
static тип имяМетода(параметры)
{
// тело метода
}
// Статический вложенный класс
static class ИмяКласса
{
// тело класса
}
Пример
Давайте создадим класс со статическим полем и статическим методом, а затем обратимся к ним через имя класса:
public class Main
{
static int count = 0;
static void increment()
{
count++;
}
public static void main(String[] args)
{
Main.increment();
Main.increment();
System.out.println(Main.count);
}
}
Результат выполнения кода:
2
Пример
Давайте убедимся, что статическое поле является общим для всех экземпляров класса:
public class Main
{
static int count = 0;
public Main()
{
count++;
}
public static void main(String[] args)
{
Main obj1 = new Main();
Main obj2 = new Main();
Main obj3 = new Main();
System.out.println(Main.count);
}
}
Результат выполнения кода:
3
Пример
Давайте попробуем обратиться к нестатическому полю из статического метода и увидим ошибку компиляции:
public class Main
{
int nonStatic = 5;
public static void main(String[] args)
{
// System.out.println(nonStatic); // ошибка компиляции
System.out.println("Static method cannot access non-static field directly");
}
}
Результат выполнения кода:
"Static method cannot access non-static field directly"
Смотрите также
-
ключевое слово
final,
которое запрещает изменение переменной -
ключевое слово
this,
которое ссылается на текущий объект -
ключевое слово
new,
которое создает экземпляр класса -
ключевое слово
import static,
которое импортирует статические члены