Ключевое слово static
Ключевое слово static в Java используется для создания
статических членов класса: полей, методов, вложенных классов
и блоков инициализации. Статические члены принадлежат самому
классу, а не его объектам, и существуют в единственном экземпляре
на всю программу. К статическому полю или методу можно обращаться
напрямую через имя класса, без создания объекта. Статические
методы не имеют доступа к нестатическим полям и методам класса,
поскольку не привязаны к конкретному экземпляру.
Синтаксис
// статическое поле
static тип имяПоля;
// статический метод
static тип имяМетода(параметры)
{
// тело метода
}
// статический блок инициализации
static
{
// код инициализации
}
Пример
Давайте создадим класс со статическим полем и статическим методом, а затем обратимся к ним через имя класса:
public class Main
{
static int counter = 0;
static void increment()
{
counter++;
}
public static void main(String[] args)
{
Main.increment();
Main.increment();
System.out.println(Main.counter);
}
}
Результат выполнения кода:
2
Пример
Давайте создадим два объекта класса и покажем, что статическое поле является общим для всех экземпляров:
public class Main
{
static int counter = 0;
public Main()
{
counter++;
}
public static void main(String[] args)
{
Main a = new Main();
Main b = new Main();
Main c = new Main();
System.out.println(Main.counter);
}
}
Результат выполнения кода:
3
Пример
Давайте используем статический блок инициализации, который выполняется один раз при загрузке класса:
public class Main
{
static String message;
static
{
message = "abcde";
System.out.println("static block");
}
public static void main(String[] args)
{
System.out.println(Main.message);
}
}
Результат выполнения кода:
"static block"
"abcde"
Пример
Давайте создадим статический метод, который выполняет вычисления и не зависит от состояния объекта:
public class Main
{
static int sum(int a, int b)
{
return a + b;
}
public static void main(String[] args)
{
int res = Main.sum(1, 2);
System.out.println(res);
}
}
Результат выполнения кода:
3