Что происходит, потому что Java является передачей по значению.
В первом цикле, i
становится увеличивается в i++
заявления, однако, во втором цикле, что происходит в том, что i
получает указал на новое место памяти, которая хранит значение i
(в данном случае 0), а затем увеличивает старое местоположение.
Для визуализации:
i => 0x00000001 // 0
for() {
i => 0x00000002 <- 0 // store old i value (0) in new location
0x00000001++ // Increment the value stored at the old location
// Cause there is no longer a reference to 0x00000001,
// it will get garbage collected and you will be left with
// i => 0x00000002
И он будет продолжать делать то, что, назначая старое значение на новое место и приращение старого значения для каждого прохода цикла
какой? это тот же код – Axarydax
@ Вторая версия Axarydax имеет «i = i ++», а не просто «i ++» – Rup
http://stackoverflow.com/questions/7911776/what-is-x-after-xx – NINCOMPOOP