Если они были объявлены как поля класса, тогда они были бы действительно инициализированы 0.
Вы немного сбиты с толку, потому что если вы пишете:
class Clazz {
int a;
int b;
Clazz () {
super ();
b = 0;
}
public void printA () {
sout (a + b);
}
public static void main (String[] args) {
new Clazz ().printA ();
}
}
Тогда этот код напечатает «0». Это связано с тем, что при создании нового экземпляра Clazz будет вызываться специальный конструктор. Сначала будет вызываться super ()
, тогда поле a
будет инициализировано неявно, а затем будет выполнена строка b = 0
.