В здесь:Конструкторы звонок в Java
Выход должен быть 9, Почему 10?
Может кто-нибудь объяснить мне шаг за шагом?
В здесь:Конструкторы звонок в Java
Выход должен быть 9, Почему 10?
Может кто-нибудь объяснить мне шаг за шагом?
Замыкание while
, когда count
составляет 10 (9 все еще меньше 10).
Тогда вы println
count
, значение которого равно 10.
Наконец вы увеличиваете его значение, которое после печати, это 11.
Это потому, что вы начинаете отсчет с 0 и остановками на 9, 9 включен , Ваш счет начинается с 0 и увеличивается на 1 примерно 10 раз. Если вы подсчитаете номер по номеру, 0 1 2 3 4 5 6 7 8 9, вы увидите, что есть 10 номеров.
Эта часть:
Pangool(){
while(count < 10)
new Pangool(++count)
}
count
будет увеличиваться от 0 вплоть до 10.
Тогда на здесь:
public static void main (String[] args){
new Pangool();
new Pangool("Pangool");
System.out.println(count++);
}
Это напечатает текущее значение count
, затем приращение count
. Эта линия:
System.out.println(count++);
эквивалентно:
System.out.println(count);
count = count + 1;
If you write out the code and add a few print statements, you can see the flow of the value:
before: 0
after: 1
before: 1
after: 2
before: 2
after: 3
before: 3
after: 4
before: 4
after: 5
before: 5
after: 6
before: 6
after: 7
before: 7
after: 8
before: 8
after: 9
before: 9
after: 10
10
10
11
Lemme вас через него:
Сначала это вызывает new Pangool()
, который запускает цикл
счетчик инициализируется 0
мы теперь называем Pangool(++count)
, что увеличивает количество 1 и передает значение 1 (кол ++ прошло бы 0, и изменил его на 1 после). Count равен 1.
это вызывает Pangool(int)
конструктор, который не делает ничего
цикл продолжается со значением увеличения, до того, где отсчет 9, на этом цикле мы теперь называем Pangool(++count)
что увеличивает количество до 10.
Теперь мы закончили с Pangool()
и подсчетом составляет 10
Теперь мы называем Pangool("Pangool")
, который вызывает конструктор строки, которая делает ничего не считать, по-прежнему 10.
Теперь мы называем System.out.println(count++)
, считайте это печати на 10, затем изменения составят 11.
System.out.println(count)
распечатал 11 после.
ЗАКАНЧИВАТЬ до починки и после починки операторы здесь:
почему должно быть 9? – HAL9000
Примечание: это не имеет ничего общего с конструкторами. – user2864740
@ пользователь2864740 в некоторой степени. Используется вызов конструктора с ++. И он просто не знает, что спросить. – SpacePrez