2014-01-08 3 views
0

В здесь:Конструкторы звонок в Java

enter image description here

Выход должен быть 9, Почему 10?

Может кто-нибудь объяснить мне шаг за шагом?

+6

почему должно быть 9? – HAL9000

+0

Примечание: это не имеет ничего общего с конструкторами. – user2864740

+0

@ пользователь2864740 в некоторой степени. Используется вызов конструктора с ++. И он просто не знает, что спросить. – SpacePrez

ответ

5

Замыкание while, когда count составляет 10 (9 все еще меньше 10).

Тогда вы printlncount, значение которого равно 10.

Наконец вы увеличиваете его значение, которое после печати, это 11.

+0

Это неверно, значение count равно 9, но затем счетчик вызывается с ++ перед передачей в конструктор Pangool(). – SpacePrez

+0

@ user2864740 ах, ты прав. – SpacePrez

0

Это потому, что вы начинаете отсчет с 0 и остановками на 9, 9 включен , Ваш счет начинается с 0 и увеличивается на 1 примерно 10 раз. Если вы подсчитаете номер по номеру, 0 1 2 3 4 5 6 7 8 9, вы увидите, что есть 10 номеров.

2

Эта часть:

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 
2

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 после.

ЗАКАНЧИВАТЬ до починки и после починки операторы здесь:

Java: Prefix/postfix of increment/decrement operators?

Смежные вопросы