【Java】遞增和遞減一元運算子

自從2016年大叔寫了【Java】輸入輸出這篇文章後,至今已經有7年沒有碰過Java了,從2008年開始讀Java的考試用書並且做紀錄也有8年了,當初因為感覺Nokia很強就專攻適合Nokia開發的J2ME環境,結果走錯了這條路,如今Nokia已跌落手機神壇多年,現在當紅的是Android跟iOS,我就沒有多花時間研究了,直到最近想說練練初等考試的功力,結果發現像這種++a、a++的運算子現在竟然還會算錯,看我我需要重唸JAVA了。

Google了一堆Java教學,發現一位 Zrn Ye大學生寫的第 05 篇、算術、關係、邏輯運算子這篇教學,裡面對遞增遞減運算子的前置(prefix)及後置(postfix)的翻譯與我在運算式A-B/C*(D+E)之後置式(postfix)為何?翻譯比較一致,網站架在github上內容比較花俏,點看內容覺得眼睛有點閃不適應,所以大叔會結合San Francisco的John Squirrels的教學一起分享在這,以便自己做學習紀錄。

一元運算子

一元運算子是 Java 中那些只需要一個運算元即可執行任何功能的運算子,它們的工作原理與數學中的一元運算相同。例如,您可以使用一元運算子來表示正值、負值、將值遞增 1、將值遞減 1 或取反。
+x(正值)
-x(負值)
++x(自增運算)
–x (遞減操作)
!x(否定)

一元運算子的類型

一元運算子有 5 種類型:
1.一元加號
它表示正值,如 +x = x 或 +5 = 5。
2.一元減號
它表示負值,如 -x = -x 或 -5 = -5。
3. 遞增一元運算子
它將值遞增 1,其中 ++x = x+1。
4. 遞減一元運算子
它將值減 1,其中 –x = x-1。
5.邏輯 NOT
它在邏輯上反轉布林值(boolean),例如如果 x = true,則 !x 將為 false。

遞增運算子 (++)

Java中的遞增(++)運算子(也稱為遞增一元運算子)用於將變數的值增加1。由於它是一元運算子的一種,因此可以與單個運算元一起使用。

語法

遞增運算子的語法是一對加號,即:

++x;x++;

可以在變數之前或之後應用運算子。兩者都有相同的增加 1。但是,它們都有不同的用途,可以歸類為以下類型。

  • 前置遞增運算子
  • 後置遞增運算子

例子

public class IncrementOperator {

    public static void main(String[] args) {

        int variable = 15;
        System.out.println("Original value of the variable = " + variable);

        // after using increment operator
        variable++; 	 //  increments 1, variable = 16
        System.out.println("variable++ = " + variable);

        ++variable;		//  increments 1, variable = 17
        System.out.println("++variable = " + variable);
    }
}

輸出

變數原值 = 15 variable++ = 16 ++variable = 17

前置遞增運算子 (++x;)

如果像前置(++x)一樣在變數前指定遞增運算子(++),則稱為前置遞增運算子。在這種情況下,變數的值首先增加 1,然後執行進一步的計算。

例子

public class PreIncrementOperator {

    public static void main(String[] args) {

        int variable = 5;
        System.out.println("Original value of the variable = " + variable);

        // using pre-increment operator
        int preIncrement = ++variable;

        System.out.println("variable = " + variable);
        System.out.println("preIncrement = " + preIncrement);
        System.out.println("++preIncrement = " + ++preIncrement);
    }
}

輸出

變數原值 = 5 variable = 6 preIncrement = 6 ++preIncrement = 7

後置遞增運算子 (x++;)

如果像後置(x++)一樣在變數後面指定遞增運算子(++),則稱為後置遞增運算子。在這種情況下,變數的原始值(沒有增加)用於計算,然後增加 1。

例子

public class PostIncrementOperator {

    public static void main(String[] args) {

        int variable = 100;
        System.out.println("Original value of the variable = " + variable);

        // using post-increment operator
        int postIncrement = variable++; // postIncrement = 100, variable = 101

        System.out.println("postIncrement = " + postIncrement);
        System.out.println("variable = " + variable + "\n");

            // postIncrement = 101
        System.out.println("postIncrement++ = " + postIncrement++);
            // postIncrement = 102
        System.out.println("postIncrement++ = " + postIncrement++);
            // postIncrement = 103
        System.out.println("postIncrement++ = " + postIncrement++);

        System.out.println("\npostIncrement = " + postIncrement);
    }
}

輸出

原始變數 = 100 postIncrement = 100 變數 = 101 postIncrement++ = 100 postIncrement++ = 101 postIncrement++ = 102 postIncrement = 103

測驗

下列 Java 程式執行後的輸出為何?

public class Test
{
   public static void main (String[] args)
   {
      int a=0;
      int b=0;
      for (int c=0;c<4;c++)
      {
         if((++a>2))
         {
            a++;
         }
      }
      System.out.println(a);
   }
}

(A)4 (B)5 (C)6 (D)7

答案:(C)

這是112 年公務人員初等考考試試題,統計類科資料處理大意的第16題,如果你看了上面的教學有看懂的話,這一題應該就沒有問題了。

解法如下:

c0123
a++a=1++a=2++a=3 >2
a++=4
++a=5>2
a++=6(ans)

遞減運算子 (–)

遞減顧名思義就是用來將一個變數的值減1。它也是一元運算子類型之一,所以可以和單運算元一起使用。

語法

-- X; X -- ;

與遞增運算子一樣,遞減運算子 (–) 也可以應用於變數前後。兩者都會導致相同的減量 1。它們都有不同的用途,並且可以在更多類型中分化。

  • 前置遞減運算子
  • 後置遞減運算子

前置遞減運算子 (–x;)

如果遞減運算子(–)像前置(–x)一樣出現在變數之前,則稱為前置遞減運算子。對於這種情況,首先將變數的值減 1,然後再進行其他計算。

例子

public class PreDecrementOperator {

    public static void main(String[] args) {

        int variable = 11;
        System.out.println("Original value of the variable = " + variable);

        // using preDecrement operator
        int preDecrement = --variable;

            // variable = 10
        System.out.println("variable = " + variable);
            // preDecrement = 10
        System.out.println("preDecrement = " + preDecrement);
            // preDecrement = 9
        System.out.println("--preDecrement = " + --preDecrement);  	}
}

輸出

變數原值=11 variable=10 preDecrement=10 --preDecrement=9

後置遞減運算子 (x–;)

如果遞減運算子(–)像後置(x–)一樣出現在變數後面,則稱為後置遞運算子。對於這種情況,變數的原始值(沒有減量)用於計算,然後減 1。

例子

public class PostDecrementOperator {

    public static void main(String[] args) {

        int variable = 75;
        System.out.println("Original value of the variable = " + variable);

        // using postDecrement operator
            // postDecrement = 75, variable = 74
        int postDecrement = variable--;
        System.out.println("postDecrement = " + postDecrement);
        System.out.println("variable = " + variable + "\n");
        // postDecrement = 74
        System.out.println("postDecrement-- = " + postDecrement--);
            // postDecrement = 73
        System.out.println("postDecrement-- = " + postDecrement--);
            // postDecrement = 72
        System.out.println("postDecrement-- = " + postDecrement--);

        System.out.println("\npostDecrement = " + postDecrement);
    }
}
變數原值 = 75 postDecrement = 75 variable = 74 postDecrement-- = 75 postDecrement-- = 74 postDecrement-- = 73 postDecrement = 72

結論

到本文結束時,我們希望您已經熟悉 Java 中的遞增和遞減一元運算子。接下來可以點看下面已彙整的Java教學:

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *