2016年6月20日 星期一

Java 學習日誌 026:Parentheses與Precendence Rules


如果你想要很清楚的表達一個子運算式如何用運算子構成,你可以完整地括弧出(parenthesize)一個運算式正確的運算順序,例如

((base + (rate * hours))/(2 + rate))

但如果你在一個算術運算式(arithmetic expression)省略了某些括號(parenthese),事實上,Java會幫你自動加上這些括號。而在加上這些括號時,Java依循的優先次序規則(precedence rules),就如同一般的算術規則,先乘除,後加減,例如:

base + rate * hours

以上運算式的運算方式就如同以下加上括弧後的運算方式:

base + (rate * hours)

參考資料:Walter Savitch. Absolute Java. 5th ed.

2016年6月16日 星期四

Java 學習網誌 025:Mixing Types


在用arithmetic operator做運算時,我們可用具有int形態的數字,或是具有double形態的數字,甚至兩種形態的數字同時使用。而其運算結果的形態是依據運算式內使用的數字形態來決定。

例如,運算式中有兩組數字皆具有int的形態,那其結果會是一個也具有int形態的數字;若運算式中的兩組數字中有一個具有int形態,另一個具有double形態,或兩個數字皆為double形態,則其結過會是一個具有double形態的數字。

原因是因為double形態涵括的範圍比int形態涵括的範圍大,具有int形態的數字都涵括在double形態數字內,也就是說,當運算式跨到大範圍的區域後,整個運算式包含其結果都具有大範圍所隸屬的形態。

因此,以下列出的各種數字形態,其涵蓋的範圍由左到右越來越大,因此,一個運算式結果的形態以運算式中所有數字形態隸屬于最大,也就是最右邊的形態為主。







不過,例外的是,一個運算式中所有數字裡最大的形態若是byteshort,其運算的結果則會擁有int的形態。換句話說,一個運算式的結果絕對不會擁有byte或short的形態。

參考資料:Walter Savitch. Absolute Java. 5th ed.

2016年6月15日 星期三

Java 學習日誌 024:Arithmetic Operator與Expression


如同大多數的程式語言,Java讓使用者可用variable(變數)、constant(常數)與arithmetic operator(算術運算子)來構成expression(運算式)。

其中,arithmetic operator代表的是,+(加)-(減)*(乘)/(除)以及 %(取餘數)。

參考資料:Walter Savitch. Absolute Java. 5th ed.

2016年6月13日 星期一

Java 學習日誌 023:Constant (quotes)


之前提到 ''  "" 中的constant,這兩者賦予著其各自constant不同的定義,例如:

'A'
"A"

以上兩個A有不同的定義,'A'內的A是被賦予char形態的單字,對於Java來說是有單字(char)的性質的;而"A"中的A是一個字串,一個字串並不代表不能只有一個單字,字串對Java來說並沒有任何的特性,就只是一串字母而已。

參考資料:Walter Savitch. Absolute Java. 5th ed.