| 程式的目的簡單的說就是運算、運算還是運算,加減乘除這類的動作是少不得的,在Java中提供運算功能的就是運算子(Operator),例如與算術相關的加(+)、減(-)、乘(*)、
除(/)這類的運算子,另外還有一個也很常用的餘除運算子(%),這類以數學運算為主的運算子,稱之為「算術運算子」(Arithmetic operator)。 這類運算子的使用基本上與我們學過的加減乘除一樣,也是先乘除後加減,必要時加上括號表示運算的先後順序,例如這個程式碼會在主控台顯示7: System.out.println(1 +
2 * 3);
編譯器在讀取程式碼時,是由左往右讀取的,而初學者往往會犯一個錯誤,例如(1+2+3) / 4,由於一般習慣將分子寫在上面,而分母寫在下面的方式,使得初學者往往將之寫成了: System.out.println(1+2+3
/ 4);
這個程式事實上會是這樣運算的:1+2+(3/4);為了避免這樣的錯誤,在必要的時候為運算式加上括號才是最保險的,例如: System.out.println((double)(1+2+3)
/ 4);
注意在上面的程式碼中使用了double限定型態轉換,如果不加上這 個限定字的話,程式的輸出會是1而不是1.5,這是因 為在這個Java程式中,1、2、3、4這四個數值都是整數,當程式運算後,會自動去除小數點之後的數字再進行輸出,而加上double限定,表示 要運算後的值轉換為double資料型態,如此小數點之後的數字才不會被去除。 同樣的,看看這段程式會印出什麼結果? int testNumber = 10;
System.out.println(testNumber / 3); 答案不是3.3333,而是3,小數點之後的部份被自動消去了,這是因為estNumber是整數,而除數3也是整數,運算出來的程式被自動轉換為整數 了,為了解決這個問題,您可以使用下面的方法: int testNumber = 10;
System.out.println(testNumber / 3.0); System.out.println((double) testNumber / 3); 上面這個程式片段示範了兩種解決方式:如果運算式中有一個浮點數,則程式就會先轉換使用浮點數來運算,這是第一段程式所使用的方式;第二個方式稱之為「限 定型態轉換」,您使用double告訴程式先將testNumber的值轉換為double,然後再進行除法運算,所以結果會是正確的3.3333;型態 轉換的限定關鍵字就是宣告變數時所使用的int、float等關鍵字。 當您將精確度小的資料型態(例如int)指定給精確度大的資料型態(例如double),這樣的指定在精確度並不會失去,所以這樣的指定是可行的。 Java對於程式的安全性要求極高,型態轉換在某些情況一定要明確指定,就是在使用指定運算子時,將精確度大的指定給精確度小的變數時,由於在精確度上會 有遺失的現象,編譯器會認定這是一個錯誤,例如: int testInteger = 0;
double testDouble = 3.14; testInteger = testDouble; System.out.println(testInteger); 這段程式在編譯時會出現以下的錯誤訊息: possible loss of
precision
found : double required: int testInteger = testDouble ^ 1 error 如果您確定這是您要的結果,您必須明確加上轉換的限定字: testInteger = (int)
testDouble;
%運算子是餘除運算子,它計算除法後的餘數,一個使用的例子是數字循 環,假設有一個立方體要進行360度旋轉,每次在角度上加1,而360度後必須復歸為0,然後重新計數,這時您可以這麼撰寫: count = (count + 1) %
360;
|