自動遞增和遞減
和C類似,Java提供了大量的快捷運算。這些快捷運算使編碼更方便,同時也使得代碼更容易閱讀,但是有時可能使代碼閱讀起來更困難。
遞增和遞減運算是兩種相當不錯的快捷運算(常稱爲“自動遞增”和“自動遞減”運算)。其中,遞減操作符是“–”,意爲“減少一個單位”;遞增操作符是“++”,意爲“增加一個單位”。舉例來說,假設a是一個int(整數)值,則表達式++a就等價於(a=a+1)。遞增和遞減操作符不僅改變了變量,並且以變量的值作爲生成的結果。
這兩個操作符各有兩種使用方式,通常稱爲“前綴式”和“後綴式”。“前綴遞增”表示“++”操作符位於變量或表達式的前面;而“後綴遞增”表示“++”操作符位於變量或表達式的後面。類似地,“前綴遞減”意味着“–”操作符位於變量或表達式地前面;而“後綴遞減”意味着“–”操作符位於變量或表達式地後面。對於前綴遞增和前綴遞減(如++a或–a),會先執行運算,在生成值。而對於後綴遞增和後綴遞減(如a++或a–),會先生成值,在執行運算。下面是一個例子:
//:operators/AutoInc.java
//Demonstrates the ++ and -- operators
import static net.mindview.util.Print.*;
public class AutoInc {
public static void main(String[] args) {
int i = 1;
print("i : "+i);
print("++i:"+ ++i);//Pre-increment
print("i++:"+ i++);//Post-increment
print("i:"+i);
print("--i:"+ --i);//Pre-decrement
print("i--:"+ i--);//post-decrement
print("i:"+i);
}
}/*Output:
i:1
++i:2
i++:2
i:3
--i:2
i--:2
i:1
*///:~
從中可以看到,對於前綴形式,我們在執行完運算後才能得到值,但對於後綴形式,則是運算執行之前就得到值,他們是除那些涉及賦值地操作符以外,唯一具有副作用地操作符。也就是說,它們會改變操作數,而不僅僅是使用自己的值。
遞增操作符正是對C++這個名字的一中解釋,暗示這“超越C一步”。在早期的一次有關Java的演講中,Bill Joy(Java創始人之一)聲稱“Java=C+±-”意味着Java已去除看C++中一些很困難而又沒有必要的東西,成爲了一種更精簡的語言。