天天看點

操作符--自動遞增和遞減(字首式和字尾式的差別、i++和++i差別)

         遞增和遞減運算是兩種相當 不錯的快捷運算(常稱為“自動遞增”和“自動遞減”運算)。其中,遞減操作符是“--”,意為“減少一個機關”;遞增操作符是“++”,意為“增加一個機關”。舉個例子來說,假設a是一個int(整數)值,則表達式++a就等價于(a=a+1)。遞增和遞減操作符不僅改變了變量,并且以變量的值作為生成的結果。

         這兩個操作符各有兩種使用方式,通常稱為“字首式”和“字尾式”。“字首遞增”表示“++”操作符位于變量或表達式的前面;而“字尾遞增”表示“++”操作符位于變量或表達式的後面。類似地,“字首遞減”意為着“--”操作符位于變量或表達式的前面;而“字尾遞減”意味着“--”操作符位于變量或表達式的後面。對于字首遞增和字首遞減(如++a或--a),會先執行運算,再生成值。而對于字尾遞增和字尾遞減(如a++或a--),會先生成值,再執行運算。下面的例子就闡釋了這一概念:

package assignment;

public class AutoInc {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int i=1;
		System.out.println("i :"+i);
		
		System.out.println("++i :"+ ++i);
		
		System.out.println("i++ :"+ i++);
		
		System.out.println("i :"+i);
		
		System.out.println("--i :"+ --i);
		
		System.out.println("i-- :"+ i--);
		
		System.out.println("i :"+i);
	}

}
           

程式運作結果如下:

i :1
++i :2
i++ :2
i :3
--i :2
i-- :2
i :1
           

        從中可以看出,對于字首形式,我們在執行完運算後才得到值。但對于字尾形式,則是在運算執行之前就得到值。它們是除那些涉及指派的操作符以外,唯一具有“副作用”的操作符。也就是說,它們會改變操作數,而不僅僅是使用自己的值。