Почему не создается второй объект класса?

лучше сравнивать так:

int a = 1;
if (1 == a) {
}

сравните с:

int a = 1;
if (a == 1) {
}

тогда вы не сможете сделать такой ошибки в первом варианте:

компилятор сругается на немодифицируемое значение.

а во втором случае он это проглотик, как будто так и надо и вам ничего не скажет. и будете вы искать ошибку до второго пришествия.

приучайтесь писать так везде и в циклах тоже.