1. 程式人生 > >i=i+1與i+=1的區別及效率

i=i+1與i+=1的區別及效率

int 而且 它的 obj 情況下 new clas IT 編譯器

在做個java優化的PPT時,看到了i=i+1與i+=1的區別,在這之前還真沒想到那麽細。

1.x=x+1,x+=1及x++的效率哪個最高?為什麽?

x=x+1最低,因為它的執行如下。

(1)讀取右x的地址;

(2)x+1;

(3)讀取左x的地址;

(4)將右值傳給左邊的x(編譯器並不認為左右x的地址相同)。

x+=1其次,它的執行如下。

(1)讀取x的地址;

(2)x+1;

(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

i=i+1與i+=1的區別及效率