Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

например.

class one{
 static final Integer b;

 static {
    b=Integer.valueOf(2);
 }
}

Ответ 2

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

За пределами этих разрешений допускаются только объявления.

Это:

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

Так работает java, вы не можете добавить код не декларации (извините, что не знаю правильный термин) внутри класса, этот код должен быть внутри методов.

Ответ 6

Я думаю, что терминология, пара других ответов немного отброшены. Объявления также являются заявлениями. Фактически, они называются "заявлениями заявления", которые являются одним из трех видов утверждений. Оператор присваивания является одной из форм выражения "выражение" и может использоваться только в конструкциях, таких как методы, конструкторы и инициализаторы. Просмотрите раздел "Заявления" в этой ссылке для учебника Oracle.

Ответ 7

Методы несут ответственность за выполнение мутаций на переменные-члены. Если переменная-член должна быть инициализирована, java предоставляет способ сделать это во время построения, определение класса (последний случай). Но мутация не может быть выполнена во время определения (прежний случай). Обычно это делается на уровне метода.

Объекты предназначены для хранения состояния, а методы предназначены для работы в этом состоянии.