3.15. Директива static

Иногда требуется создать метод, который можно было бы использовать вне контекста какого-либо объекта его класса. Так же, как в случае main, все, что требуется для создания такого метода - указать при его объявлении модификатор типа static. Статические методы могут непосредственно обращаться только к другим статическим методам, в них ни в каком виде не допускается использование ссылок this и super. Переменные также могут иметь тип static, они подобны глобальным переменным, то есть, доступны из любого места кода. Внутри статических методов недопустимы ссылки на переменные представителей. Ниже приведен пример класса, у которого есть статические переменные, статический метод и статический блок инициализации.

class Static { static int a = 3; static int b;

static void method(int x) { System.out.println("x = " + x); System.out.println("a = " + a); System.out.println(,T5 = " + b);

}

static {

System.out.println("Himimaim3HpoBaH статический блок"); b = a * 4;

}

public static void main(String args[]) { method(42);

} }

Ниже приведен результат запуска этой программы.

Инициализирован статический блок

Х = 42 А=3 В = 12

В следующем примере мы создали класс со статическим методом и несколькими статическими переменными. Второй класс может вызывать статический метод по имени и ссылаться на статические переменные непосредственно через имя класса, class StaticClass { static int a = 42; static int b = 99; static void callmeO { System.out.println("a = " + a); } }

class StaticByName {

public static void main(String args[]) {

StaticClass. callme();

System.out.println(,T5 = " + StaticClass.b);

} }

А вот и результат запуска этой программы: а = 42Ь = 99