解釋:i=i++

今天在百度知道上看到別人提的一個問題,主要是不明白i=i++運算結果,自己之前看過java關於++的細節,不過一時自己也解釋不明白,就去查了下java語言規範,才恍然大悟:作文記之! 
首先一段代碼: 
Java代碼  收藏代碼
  1. public static void main(String [] args){  
  2.         int i = 0;  
  3.         i=i++;  
  4.         System.out.println("i="+i);  
  5.         int j = 0;  
  6.         j=i++;  
  7.         System.out.print("j="+j+" i="+i);  
  8.     }  

運行結果: 
i=0 
j=0 i=1 
java語言規範裏對與++是這樣說的:The result of the postfix increment expression is not a variable, but a value.即:++表達式結果是個值,而不是變量。 
變量?值? 
這是java特殊的地方,對於這裏,java有兩個存儲區,一個是暫存區(堆棧),一個是變量區, 

拿“j=i++(i和j初始爲0) ”解釋下,第一步,把i值存起來,有兩個,暫存區:0,變量區:0;第二步:進行i++,i 暫存區還是0,變量區變爲1了(也就是說進行完i++後,打印i的值,那麼i值爲1,打印的是變量的值,即變量區的值,爲1沒問題)。第三步:進行給j賦值,賦的是i++的值,i++的值是0!爲什麼呢?之前說了,他是個值,不是變量,那麼i++運行完後i++的值就應該從暫存區去取,暫存區存的是0,那麼他就是0。i=i++也能解釋通了。


轉載自:http://qmeng2008.iteye.com/blog/1155430

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章