楠木軒

【JAVA學習筆記】第三章運算子與分歧文

由 機東林 發佈於 經典

運算子

運算子即計算、比較、位移用的種種符號,欲知詳情請自行google。

讓我們先來看看算數運算子的範例:

將上面的程式跑一遍看看,會發現整數相除時,結果會是整數。與小數相除時,結果會是小數。

延伸1-單項運算子

先來看看以下代碼

a++與++a是什麼意思呢?

a++表示先把a的值代入b裏面之後,再把a的值+1。

++a表示先把a的值+1,再代入c裏面。

所以b的值為10,而c的值則為11。

這個運算子在跑回圈時經常被使用。

延伸2-關係運算子

關係運算子就是比較兩個值,大於小於等於或是不等於之類的。

延伸3-邏輯運算子

邏輯運算子主要就是AND OR的概念,要注意的是JAVA裏面有兩種AND符號(&和&&)和OR符號(|和||)

單一的&或|符號表示,不管結果是True或False,後半句的程式也會繼續跑完。

連續的&&符號則表示,如果前面的結果是False,返回False的結論,後半句的程式就不跑了。

連續的||符號則表示,如果前面的結果是True,返回True的結論,後半句的程式就不跑了。

跑看看下面的程序會跑出什麼樣的結果

執行結果

++b被執行了,而++d沒有被執行。

文字列處理

JAVA提供String及StringBuilder兩個類(class)來協助處理文字。

這兩者的差別也是面試常遇到的題目之一。

基本上String保存資料的方式是唯讀的,無法再做修改。而StringBuilder可以。

在實務上,如果要將多個文字列結合的時候,基於效能考量也會使用StringBuilder來做處理。

這兩個class分別有各自的方法(method)可以使用,看看以下範例:

執行結果

以上結果看起來像是修改了文字列的內容,但其實是新增了一個文字列,而不是修改原本的文字列。

再來看看StringBuilder的範例:

執行結果

大部分的方法都很直覺可以理解,不懂的部分再找咕狗大神。

Data的比較

在比較兩個值的時候,依照data類型可分為以下兩種狀況

基本型data的比較物件的比較基本型的data在做比較時,只要值相同,不同類型的data也會返回Ture結果

例如:

結果會顯示true

但是物件之間的比較就不一樣了,"=="符號比較的是兩個物件是否為同一個物件,而不是值是否相等。

執行結果

可以發現這種比較方式,在實務上會有困擾。

比如説今天想比較文字列A和文字列B的內容是否一樣,但是用"=="符號只會得到false。

這時候就要使用String類的.equals()方法來做比較。

執行結果

注意:如果沒有使用new String()方法來新增文字列,而是使用以下的方式賦值,

那麼s1和s2會參照到內存條上同樣的位址(即同物件)。

執行結果

傑克這真是太神奇了!

if條件式

文法如下if(條件){執行內容}else if(條件2){執行內容}else{執行內容}

if的部分比較單純,這邊就先跳過,需要的人請拜一下估狗大神。

條件運算子

設定一個條件,True的話就執行第一個處理,False的話就執行第二個處理。

條件?處理1 :處理2

執行結果

switch文

這個不是任天堂的switch。

用途和if類似,不過只能比較byte,char,short,int,enum,String類型的data。(也包含上述基本型data的wrapper class)

文法如下switch(比較對象){case值1:處理1;case值2:處理2;default:處理n;}

如果有很多條件要比較的話,用switch條列起來比較方便的樣子。

不過使用上也有些要注意的點,看以下範例:

執行結果

switch迴圈在使用時要注意,每個處理後面都需加一行break;,

表示執行完後跳出迴圈。如果沒有加的話就會繼續往下執行。即使是不符合條件的處理也會被執行。(傑克已經放棄治療了..)

範例中的case 2就沒有加break,所以繼續往下執行了case 3和default。

default是當所有條件都不符合時,會執行的處理。

不一定要有,也不一定要放在最後面。

以上是第三章運算子與分歧文

下一章會講迴圈

#Java#