В 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 не является статическим. Это просто локальная переменная. Вы не можете объявить статическую переменную внутри метода.
В отношении второго вопроса - статические переменные могут быть назначены столько раз, сколько вы хотите. Вы не можете переназначить только конечные переменные.