i=i+1與i+=1及x++的區別和效率ide
1.x=x+1,x+=1及x++的效率哪一個最高?爲何?編譯器
x=x+1最低,由於它的執行以下。it
(1)讀取右x的地址;編譯
(2)x+1;class
(3)讀取左x的地址;效率
(4)將右值傳給左邊的x(編譯器並不認爲左右x的地址相同)。di
x+=1其次,它的執行以下。view
(1)讀取x的地址;vi
(2)x+1;co
(3)將獲得的值傳給x(由於x的地址已經讀出)。
x++最高,它的執行以下。
(1)讀取右x的地址;
(2)x自增1.
2.x=x+1,和 x+=1; 在什麼狀況下不成立 並且 x=x+1 是錯誤的; (類型隱式轉換)
short x=1;
x+=1;
x=x+1; //由於 x是 short 類型 .當它+1 會自動轉變成int 當是等於又 是 short 類型..因此會報錯;
3.x=x+1,和 x+=1; 在什麼狀況下不成立 並且 x+=1 是錯誤的; Object x="abc"; String y="def"; x+=y; x=x+y