1. 程式人生 > >Java的中間快取變數機制

Java的中間快取變數機制

//對於後增運算子
for(int i=0;i<100;i++)
{
    j = j++;
}  
等同於:
int temp = j;  
j = j + 1;  
j = temp;  

//對於前增運算子
for(int i=0;i<100;i++)
{
    j = ++j;
}  
等同於:
j = j + 1;  
int temp = j;  
j = temp;

解釋:
這是因為Java在進位制自增運算時,使用了Java的中間變數快取機制。
進行自增運算時,Java會為每一個自增表示式新建一個臨時變數,
如果是字首加(++j),就會“先自加1後賦值(給臨時變數)”;
如果是字尾加(j++),就會“先賦值(給臨時變數)後自加1”。
運算最終使用的,並不是變數本身,而是被賦了值的臨時變數。

注意:

j = j++ + ++j;
//等同於
int temp1 = 0;
j = j + 1; //j = 1
j = j + 1; //j = 2
int temp2 = j; //temp2 = 2;
j = temp1 + temp2;//j =  0 + 2

兩者之間的區別

j = ++j + j++;
//等同於
j = j + 1;
int temp1 = j; //temp1 = 1
int temp2 = j; //temp2 = 1
j = j + 1;
j = temp1 + temp2;//j = 1 + 1