My Think

我決定的路,我將走下去

2013年8月31日 星期六

【Java】Java之a++跟++a

最近在學習Java,碰巧同學在詢問a++跟++a的差異性
,而兩者的差異主要是在於:
a++是程式執行完換行後才會+1,++a是一執行到該行時就先+1,
以下為一段Java的程式碼來說明
比較值得的注意的是當在for迴圈內跑a++或++a時,其結果是一樣的,不會有差異性.




public static void main(String[] args) {
 int a = 1; 
 int b = 2; 
 int c; 
 int d; 
 System.out.println("第一行計算:c = ++b"); 
 c = ++b; 
 System.out.println("a = " + a); 
 //c取得b的值,所以c = + b;
 System.out.println("b = " + b);   
 System.out.println("c = " + c); 
 /* d尚未做運算,又因沒有預設值,在執行程式會出錯
 System.out.println("d = " + d); */
 System.out.println(); 
 System.out.println("第二行計算:d = a++"); 
 /*System.out.println("因a++的++屬後做,當剛進來時a的值還是1,
 但只要跳離此行換下行執行時,即會做+1的動作,也就是說,
 後加1的意思是只要脫離該行即會+1,因此a在脫離d=a++換下行的c++時,
 則+1了,因此,其值為2。" ) */
 d = a++; 
 System.out.println();    
 System.out.println("a = " + a); 
 //b與c的值不變,所以c跟b都還是3
 System.out.println("b = " + b);    
 System.out.println("c = " + c); 
 //d取得a的一開始的初始值,所以d = 1
 System.out.println("d = " + d); 
 System.out.println(); 
 System.out.println("第三行計算:c++"); 
 //a、b與d的值不變,而c的轉換如同a++,所以,最後的值即為4
 c++; 
 System.out.println("a = " + a); 
 System.out.println("b = " + b); 
 System.out.println("c = " + c); 
 System.out.println("d = " + d);
}

輸出結果為:


如改用FOR LOOP 執行:
public static void main(String[] args) {
  System.out.println("i++ value are :");
  for(int i=0;i<10;i++){
   System.out.println("i++="+i);
  }
  
  System.out.println("++i value are :");
  for(int i=0;i<10;++i){
   System.out.println("++i="+i);
  }
}

輸出結果為:

沒有留言:

張貼留言