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.

2015年12月1日 星期二

Java 學習日誌 022:Constant


我們稱一個特定的值為constant(常數),或literal。例如2或3.14159都是constant。Constant是單一的;相反的,variable(變數)是多樣的。

以下解釋各種type(形態)的constant的寫法。

第一種constant:

擁有int形態(或其他整數形態)的constant裡不能有小數點;而擁有小數點形態的constant(float或是double),有兩種寫法。第一種比較簡單的寫法就如同我們一般寫小數的方式,一定要包含一個小數點在其中,而第二種比較複雜的寫法,又稱為scientific natation(科學記號)或是floating-point notation(浮點記號),常用在表示特別大或特別小的值,例如:

3.67乘以10的5次方,也寫作367000.0,而在Java中則寫作3.67e5
5.89乘以10的負4次方,也寫作0.000589,而在Java中則寫作5.89e-4

以上兩行數字中的eexponent(指數)的縮寫,表示乘以10的某次方。

第二種constant:

擁有char形態的constant是將字元放在一對單引號裡,例如:

char symbol = 'z';

第三種constant:

而擁有一個字串的constant則是將字串放在一對雙引號中,例如:

System.out.println("Welcome to Java.");

需要特別注意的是,以上兩個單引號是相同的符號,而兩個雙引號也是相同的符號。

第四種constant

擁有boolean形態的constant有兩種true以及false這兩種constant可以用來宣告在一個擁有boolean形態的variable,使其擁有truefalse的特性。

需要特別注意的是,這兩個constant的字母都必須要小寫。


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

2015年11月24日 星期二

Java 學習日誌 021:Assignment Statement中declare與initialize的規則與相容性


理論上,我們無法不能賦予一個variable不是他的type的值,例如:

int intVariable;
intVariable = 2.99;

以上式子會被顯示為錯誤,因為2.99的type是double,而intVariable的type是int

不過在某些情況下,我們可以賦予一個variable不是他的type的值。我們可以賦予有小數type(例如type double)的variable,一個整數type(例如type int)的值,舉例來說:

double doubleVariable;
doubleVariable = 2;

以上的式子是正確的,因為doubleVariable的值會被解讀為2.0

同樣地,我們也可以歸類擁有小數type的variable在擁有整數type的variable底下,例如:

int intVariable;
intVariable = 42;
double doubleVariable;
doubleVariable = intVariable;

總結來說,在下面的式子中,我們可以賦予擁有後者type的variable,前者的值:

byte -> short -> int -> long -> float -> double

以上規則可以成立的原因是,越往右邊,其涵蓋的範圍越大。

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

2015年11月23日 星期一

Java 學習日誌 020:Assignment Statement的縮寫


之前在「Java 學習日誌 018」裡提過assignment statement的三種例子,而其中的一種(例子中的第三種):

Variable = Variable Op (Expression)

為可持續變換variable的值的assignment statement,有縮寫的型式為:

Variable Op = Expression

其中,Expression可為另一個variable、常數或一個較複雜的運算式;Op可以為+、-、*、/或%以及一些還沒提到的運算子,例如:


















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