Декларация & amp; Инициализация переменных экземпляра в java [duplicate]

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

-2
задан AlexR 28 April 2015 в 08:02
поделиться

4 ответа

Когда вы делаете это на уровне класса, вам разрешено комбинировать декларацию и присваивание только в одном выражении, например:

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
}
1
ответ дан Konstantin Yovkov 17 August 2018 в 20:04
поделиться

Следующая причина:

int a=5;

, объявленная на уровне класса, не создает ошибку времени компиляции, когда:

void m1() {
    int a;
    a=5;
}

объявлен, поскольку m1() имеет свою собственную область.

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

PS: Вы не можете делать следующее на уровне класса:

int a;
a=5;

Вам придется:

int a=5;
0
ответ дан Darshan Lila 17 August 2018 в 20:04
поделиться

Назначение значения переменной называется выражением. Мы не могли написать какое-либо выражение в классе. Мы могли бы сделать то же самое в телах методов. В принципе, мы могли бы иметь правильные выражения, когда область видимости определена и, следовательно, разрешена в методе.

0
ответ дан HJK 17 August 2018 в 20:04
поделиться

Вы не можете писать код в класс, только в методе, конструкторе или в блок инициализации {}. Вот почему вы получаете синтаксическую ошибку. Возможно, вы хотите использовать блок инициализатора следующим образом:

class my{
 int a;
 {
  a=1;
 }
}
0
ответ дан Laszlo Lugosi 17 August 2018 в 20:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: