Реклама:

Поэтому статические методы называются методами класса (class methods), в отличие от нестатических методов, называемых методами экземпляра (instance methods). Отсюда вытекают другие особенности статических методов:

• в статическом методе нельзя использовать ссылки this и super;

• в статическом методе нельзя прямо, не создавая экземпляров, ссылаться на нестатические поля и методы;

• статические методы не могут быть абстрактными;

• статические методы переопределяются в подклассах только как статические.

Статические переменные инициализируются еще до начала работы конструктора, но при инициализации можно использовать только константные выражения. Если же инициализация требует сложных вычислений, например, циклов для задания значений элементам статических массивов или обращений к методам, то эти вычисления заключают в блок, помеченный словом static, который тоже будет выполнен до запуска конструктора:

static int[] a = new a[10]; static {

for(int k = 0; k < a.length; k++) a[k] = k * k;

}

Операторы, заключенные в такой блок, выполняются только один раз, при первой загрузке класса, а не при создании каждого экземпляра.

Метод main()

Всякая программа, оформленная как приложение, должна содержать метод с именем main. Он может быть один на все приложение или содержаться в некоторых классах этого приложения, а может находиться и в каждом классе.

Метод main() записывается как обычный метод, может содержать любые описания и действия, но он обязательно должен быть открытым (public), статическим (static), не иметь возвращаемого значения (void). Например,

class HelloWorld{

public static void main(String[] args) {System.out.println("Hello, World!"); }

}

Метод main() вызывается автоматически исполняющей системой Java в самом начале выполнения приложения. При вызове интерпретатора java указывается класс, где записан метод main(), с которого надо начать выполнение. Аргументом метода main() является массив строк (String[]). По традиции этот массив называют args, хотя имя может быть любым. При вызове интерпретатора java можно передать в метод main() несколько параметров, которые интерпретатор заносит в массив строк. Эти параметры перечисляются в командной строке вызова java через пробел сразу после имени файла (класса).

Где видны переменные

В языке Java нестатические переменные можно объявлять в любом месте кода между операторами. Статические переменные могут быть только полями класса, а значит, не могут объявляться внутри методов и блоков. Переменным класса и экземпляра неявно присваиваются нулевые значения. Символы неявно получают значение '\u0000', логические переменные - значение false, ссылки получают неявно значение null .

Локальные же переменные неявно не инициализируются. Им должны либо явно присваиваться значения, либо они обязаны определяться до первого использования. Компилятор замечает неопределенные локальные переменные и сообщает о них.

Блок инициализации экземпляра (instance initialization) - это просто блок операторов в фигурных скобках, но записывается он вне всякого метода, прямо в теле класса. Этот блок выполняется при создании каждого экземпляра, после инициализации при объявлении переменных, но до выполнения конструктора. Он играет такую же роль, как и static-блок для статических переменных.


⇐ Предыдущая страница| |Следующая страница ⇒