自從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題,如果你看了上面的教學有看懂的話,這一題應該就沒有問題了。
解法如下:
c | 0 | 1 | 2 | 3 |
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教學:
- 正確使用java array
- 【Java】遞增和遞減一元運算子