對(duì)于i=i++ 賦值運(yùn)算最后算,先算i++
將1壓入操作數(shù)棧,將i壓入局部變量表
將i自增,局部變量表中i=2
再將操作數(shù)棧中的1賦值給i
因此i曾經(jīng)變?yōu)?但結(jié)果還是1
i++和++i在理論效率上是沒(méi)有什么區(qū)別的,因?yàn)樗麄兘?jīng)過(guò)編譯器優(yōu)化后的字節(jié)碼是一樣的,
而在for循環(huán)的比較中i--的速度更快,這是因?yàn)閷?duì)于寄存器的操作中,有幾個(gè)標(biāo)志位,i--時(shí),減法會(huì)影響4個(gè)標(biāo)志位,其中有一個(gè)是判斷正負(fù),比較時(shí)可以直接用這個(gè)來(lái)判斷,而i++只會(huì)影響一個(gè)是否溢出標(biāo)志位,每次循環(huán)都要多一條指令來(lái)判斷是否大于閾值