iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
自我挑戰組

Java SE系列 第 5

Day05:就像是刷牙洗臉倒垃圾

今天大概的進度要進到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,但是如果這樣++的敘述有被指派給其他變數時,就要多注意了。


上一篇
Day04:原來早就在這裡有共享經濟了
下一篇
Day06:爸爸這麼做都是為你好
系列文
Java SE30

尚未有邦友留言

立即登入留言