Задать вопрос
@Ille
Новичок

Почему counter = 1?

Почему в нижеприведенном коде
Id tom = 1??

В конструкторе объекта написано, что id = counter++
counter =1. Сл-но id = 1+1 = 2.

Почему в этой строке :
System.out.println(Person.counter);
выводится значение 3 ??? Здесь же нет нового объекта, в котором конструктор прибавляет единицу.

public static void main(String[] args) {

        Person tom = new Person();
        Person bob = new Person();

        tom.displayId();    // Id = 1
        bob.displayId();    // Id = 2
        System.out.println(Person.counter); // 3

        // изменяем Person.counter
        Person.counter = 8;

        Person sam = new Person();
        sam.displayId();    // Id = 8
    }

public class Person {

    private int id;
    static int counter=1;

    Person(){
        id = counter++;
    }
    public void displayId(){

        System.out.printf("Id: %d \n", id);
    }
  • Вопрос задан
  • 147 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Потому что id = counter++ сначала присваивает текущее значение, а затем увеличивает counter на один
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@artem-dainov
Php, java, js. Boot spring, jquery, git
Вам нужно counter установить как 0.
Затем будет вызываться конструктор, который сделает ++.
Тогда у вас будет всё корректно.
Совет, на будущее, используйте геттиры и сеттиры.
Ответ написан
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Потому что counter = 1 + (1 + 1) равно трем (3)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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