Сегодня подробнее разбирал циклы for и foreach. Вроде как всё элементарно просто и понятно. Пока не дошёл до вложенных циклов... Тут я завис.
Вот, например, табличка умножения:
Вот, например, табличка умножения:
Смотрю я на этот вложенный цикл и думаю - как же ты сука работаешь? Погуглив на скорую руку - никакого внятного объяснения я не нашёл. Пришлось взять в зубы дебагер и ковырять самому...
Оказывается, вот оно как работает:
- Джава берёт начальное значение переменной i, равное единице
- проверяет условие i < 10 - условие выполнено
- кидает эту единицу во внутренний цикл for
- во внутреннем цикле точно так же берёт начальное значение переменной j, тоже равное 1
- проверяет условие j < 10 - условие выполнено
- a = 1 * 1, следовательно a = 1
- выводит на экран 1 |
- затем переходит на итерацию вложенного цикла: j = j + 1, следовательно j = 2
- снова проверяет условие j < 10 - условие выполнено
- a = 1 * 2, следовательно a =2
- выводит на экран 2 |
- и т. д. до 9. А вот когда значение j доходит до 10 - происходит самое интересное
- когда j = 10, то условие j < 10 не выполняется и программа выходит из внутреннего цикла и выполняет следующий оператор внешнего цикла System.out.println() - перенос строки. А потом...
- а потом выполняется итерация внешнего цикла: i = i + 1, следовательно i теперь равно 2
- эта двойка попадает во внутренний цикл, в котором: a = 2 * 1 откуда a = 2
- выводит на экран с новой строки 2 |
- ну и т. д. и т. п.
- цикл будет работать до тех пор, пока переменная i не станет равной 10.
Комментариев нет:
Отправить комментарий