В Java переменные, объявленные внутри статических методов статическими?

Предположим следующее:

private static boolean A()
{
  int parsedUntil = 0;
  ...
  ...
  ...
}

Является ли parsedUntil считаться статической переменной? Я заметил, что я не могу объявить его статичным в этой статической функции.

Последующий вопрос: я прочитал, что статическая переменная будет инициализирована только один раз. Означает ли это, что в первый раз, когда я вызываю функцию A(), значение будет установлено на ноль, но каждый раз, когда я вызываю A(), эта строка опускается?

Ответы

Ответ 1

Нет, это не статическая переменная. Это локальная переменная. Любая переменная, объявленная в методе, является локальной переменной. Если вы хотите статическую переменную, вы должны объявить ее вне метода:

private static int parsedUntil = 0;

Невозможно объявить статическую переменную, которая может использоваться только в рамках одного метода.

Ответ 2

нет, A() - статический метод, а parsedUntil - локальная переменная внутри A.

Модификаторы, такие как static, недействительны в локальных переменных (допускается только final afaik)

Последующий вопрос: я прочитал, что статическая переменная будет инициализирован один раз.

True

Означает ли это, что первый раз я вызываю функцию A() значение будет установлено на ноль, но каждый в другое время я вызываю A(), эта строка опущены?

поскольку parsedUntil не является статическим полем, а локальной переменной в статическом методе, это не так.

Ответ 3

static переменные не могут быть объявлены локально внутри методов - они могут быть только членами класса, и они инициализируются при загрузке класса.

Ответ 4

Java не имеет статических локальных переменных, таких как C или С++, поэтому у вас никогда не может быть static int parsedUtil = 0;.

Итак, нет, parsedUtil не имеет никакого значения "статический". Его значение инициализируется до 0 при каждом выполнении метода.

Ответ 5

Нет, это не C.

parsedUntil не является статическим. Это просто локальная переменная. Вы не можете объявить статическую переменную внутри метода.

В отношении второго вопроса - статические переменные могут быть назначены столько раз, сколько вы хотите. Вы не можете переназначить только конечные переменные.