JAVA新手教學 (3) – 運算子與簡易 if 指令
上一篇文章中實作了簡單的加法計算器,可是平常在使用的計算機可不只會加法。我們現實生活中的數學有非常多複雜的公式,這些公式是由許多運算子結合而成的,今天來教大家除了加法以外的運算式以及簡易 if 指令。
用 Telegram 訂閱【挨踢路人甲】最新文章:https://t.me/itwshare
追蹤【挨踢路人甲】粉絲專頁:https://www.facebook.com/itwalker
Arithmetic(算數):
-運算子(operator)
乘法運算子 * (左數*右數)
除法運算子 / (左數/右數)
餘數運算子 % (左數/右數餘剩多少)
加減法運算子 + 、 –(左數+、-右數)
-java視兩整數相除為整數,小數部分無條件消去。ex.7/5計算結果為1,不是1.4。
–%計算兩整數相除所得整數餘數。ex.7%5計算結果為2。
運算子優先性:
-部分算術運算子的計算較其他運算子優先執行,但使用括弧可以強制低順位運算子先執行。
變數自我相乘、相加、相減、相除:
上一個章節有提到”=”的意義是把右邊的值複製給左邊,假設現有一個變數a,其值為10。我們像要讓a變成100該怎麼做呢?這時候有沒有理解”=”的意義就非常重要,我們想要更改a的值,那麼a就會在=左邊,右邊就會是100那麼語法就是【a=100;】,=右邊可以用運算式代替,像是a*10或是a+90,語法分別是【a=a*10;】、【a=a+90;】。這時候新的a的值就會是100。
通常工程師都很懶惰,所以有更簡潔的寫法,【a=a*10;】變成【a*=10;】,【a=a+90;】變成【a+=90;】,執行結果不會變。
接著來探討變數除以0會發生甚麼事呢?根據被除數的型別會得到不同的結果。例如int型別變數除以0會出現程式錯誤,不管是1/0、0/0都會出現程式錯誤。
來看看浮點數型別變數除以0會發生甚麼吧!居然出現了【Infinity】─無限,為甚麼會這樣呢?原因因為java的float型別和double型別使用了IEEE 754 標準(二進位浮點數算術標準),其規定為浮點數除以0等於正無窮或負無窮。
那麼浮點數的0.0/0.0會發生甚麼事呢?執行完畢後出現了【NaN】,全名為Not a Noumber。在Java定義裡0.0/0.0就是所謂的非數。
if指令:
-語法
-if為控制選擇性執行的指令。
-如果判斷條件為true,則執行程式段(大括號)內的程式碼,若只有一條指令可以不加大括號。若判斷條件為false則跳過不執行。
-無論if內的指令執行與否,都會接著if後的指令繼續執行。
-判斷條件由相等(equality,==)或關係運算子組成。
-if判斷式後不用加分號。
判斷條件:
-任何可以計算或判斷出true 或false的運算式都可以作為判斷式來使用,注意!!! 【!=】、【>=】、【<=】順序不可以反過來。
接下來來練習一下看看你是否搞懂了運算子的關係式。
int a=10;
int b=20;
int c=b=a;
c*=c;
試問c最後式多少?
答案是100,你對了嗎?下圖為執行順序與記憶體的關係。
如果再結合if判斷式的話會怎麼樣呢?在【c*=c;】加上兩行if判斷式【if(c==100){程式碼}】,【if(c!=100){程式碼}】,結果會如何呢?
因為c的值是100,所以第一個判斷式為true,會執行程式段內的指令。執行完畢會跳下一行程式碼,也就是第二個判斷式,因為c為100,其判斷結果為false,所以不會執行程式段裡的程式碼。
除了最基本的if指令以外還有else if以及else,這三個指令如何運用呢?紅框框的else if可以根據判斷式的多少決定需要加幾個。最後一個判斷式直接打else,不需要加判斷條件。
如果我是一個老師,我今天要把學生的成績分等級,我該怎麼做?今天有一位學生的成績是61,要怎麼分級呢?我們把成績分成三個等級,分別是【很棒】、【及格】、【不及格】,接下來用if else等指令判斷分數的區間給予相應的等級,如下圖。
if指令有相當多的衍生寫法,這些會等大家更加熟悉基礎語法再做說明,下一期會進一步的說明列印指令的變化版本。