В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Когда вы делаете это на уровне класса, вам разрешено комбинировать декларацию и присваивание только в одном выражении, например:
class A {
int a = 5;
}
В противном случае вам нужно обернуть присвоение блоком (конструктор, метод, блок инициализатора). Например:
class A {
int a;
public A() { a = 5; } //via constructor
void setA() { a = 5; } //via method
{ a = 5; } //via initializer block
}
Следующая причина:
int a=5;
, объявленная на уровне класса, не создает ошибку времени компиляции, когда:
void m1() {
int a;
a=5;
}
объявлен, поскольку m1()
имеет свою собственную область.
Например, если вы не объявляете и не получаете доступ к переменной a
, она будет ссылаться на поле класса, где, как при локальном объявлении a
, вы всегда ссылаетесь на объявленную внутри a
.
PS: Вы не можете делать следующее на уровне класса:
int a;
a=5;
Вам придется:
int a=5;
Назначение значения переменной называется выражением. Мы не могли написать какое-либо выражение в классе. Мы могли бы сделать то же самое в телах методов. В принципе, мы могли бы иметь правильные выражения, когда область видимости определена и, следовательно, разрешена в методе.
Вы не можете писать код в класс, только в методе, конструкторе или в блок инициализации {}. Вот почему вы получаете синтаксическую ошибку. Возможно, вы хотите использовать блок инициализатора следующим образом:
class my{
int a;
{
a=1;
}
}