今天大概的進度要進到Controlling Program Flow,不過我自己對於這個章節好像沒有什麼特殊的心得,硬要說的話大概也就是switch...case...在case的陳述中要記得結尾加上break,不然程式按照預期跑進case後沒有遇到break就會再繼續執行下一個case。
想了想,覺得最值得討論的大概就是for迴圈中時常應用到的"++"概念吧,那就決定多說一點這部分。
來看看以下程式:
int i = 0;
int num = 0;
num = i++;
System.out.println(num);
這個num會印出什麼結果呢? 答案是「0」。
咦? 我們不是有給他++了嗎? 應該要變成1吧?
那我們再看看下面這個:
int i = 0;
int num = 0;
num = ++i;
System.out.println(num);
這次的印出結果就會是「1」了。
為什麼會有這樣的區別呢?
這時候我們就必須拆解一下num = i++以及num = ++i的行為了。
num = i++ => num = i, i = i + 1
num = ++i => i = i + 1, num = i
就像上面這樣,當我們的i++或者++i有指派給其他變數的時候,就會有先後順序上的差異; num = i++會先把i指派給num後,i本身再+1; 而num = ++i則是i自己先+1,然後再指派給num。
不過值得多想一點的是,就i本身來說,結果都會是一樣的,i一定會被+1,但是如果這樣++的敘述有被指派給其他變數時,就要多注意了。