和C類似,Java提供了豐富的快捷運算方式。這些快捷運算可使代碼更清爽,更易錄入,也更易讀者辨讀。
兩種很不錯的快捷運算方式是遞增和遞減運算符(常稱作“自動遞增”和“自動遞減”運算符)。其中,遞減運算符是“--”,意為“減少一個單位”;遞增運算符是“++”,意為“增加一個單位”。舉個例子來說,假設A是一個int(整數)值,則表達式++A就等價於(A = A + 1)。遞增和遞減運算符結果生成的是變量的值。
對每種類型的運算符,都有兩個版本可供選用;通常將其稱為“前綴版”和“後綴版”。“前遞增”表示++運算符位於變量或表達式的前面;而“後遞增”表示++運算符位於變量或表達式的後面。類似地,“前遞減”意味著--運算符位於變量或表達式的前面;而“後遞減”意味著--運算符位於變量或表達式的後面。對於前遞增和前遞減(如++A或--A),會先執行運算,再生成值。而對於後遞增和後遞減(如A++或A--),會先生成值,再執行運算。下面是一個例子:
//: AutoInc.java // Demonstrates the ++ and -- operators public class AutoInc { public static void main(String[] args) { int i = 1; prt("i : " + i); prt("++i : " + ++i); // Pre-increment prt("i++ : " + i++); // Post-increment prt("i : " + i); prt("--i : " + --i); // Pre-decrement prt("i-- : " + i--); // Post-decrement prt("i : " + i); } static void prt(String s) { System.out.println(s); } } ///:~
該程序的輸出如下:
i : 1 ++i : 2 i++ : 2 i : 3 --i : 2 i-- : 2 i : 1
從中可以看到,對於前綴形式,我們在執行完運算後才得到值。但對於後綴形式,則是在運算執行之前就得到值。它們是唯一具有“副作用”的運算符(除那些涉及賦值的以外)。也就是說,它們會改變運算對象,而不僅僅是使用自己的值。
遞增運算符正是對“C++”這個名字的一種解釋,暗示著“超載C的一步”。在早期的一次Java演講中,Bill Joy(始創人之一)聲稱“Java=C++--”(C加加減減),意味著Java已去除了C++一些沒來由折磨人的地方,形成一種更精簡的語言。正如大家會在這本書中學到的那樣,Java的許多地方都得到了簡化,所以Java的學習比C++更容易。