Вопрос-ответ

Why can't I do assignment outside a method?

Почему я не могу выполнить присваивание вне метода?

Если я пытаюсь присвоить значение переменной в классе, но вне метода, я получаю сообщение об ошибке.

class one{
Integer b;
b=Integer.valueOf(2);
}

но, если я инициализирую его во время создания, это работает.

class one{
Integer b=Integer.valueOf(2);
}

Внутри метода это работает в обоих случаях.

Переведено автоматически
Ответ 1

вам нужно сделать

class one{
Integer b;
{
b=Integer.valueOf(2);
}
}

операторы as должны отображаться в блоке кода.

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

Кстати: у вас может быть статический блок инициализатора с static { } который вызывается при инициализации класса.

например

class one{
static final Integer b;

static {
b=Integer.valueOf(2);
}
}
Ответ 2

Потому что присваивания являются операторами, а операторы разрешены только внутри блоков кода (методов, конструкторов, статических инициализаторов и т.д.)

Вне этих методов разрешены только объявления.

Это :

  class one{
Integer b=Integer.valueOf(2);
}

это объявление с инициализатором. Вот почему принято

Ответ 3

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

Ответ 4

В Java при определении класса вы можете определять переменные со значениями по умолчанию и добавлять методы. Любой исполняемый код (например, присваивания) ДОЛЖЕН содержаться в методе.

2023-03-22 03:31 java