4.6 其它運算符
對於無法歸類,或者單獨占一類的運算符,將在下面進行介紹。
l++、--
這兩個運算符是程序中的遞增和遞減運算符。其意義參照以下示例代碼:
int n = 0;
n++;// n = n + 1
System.out.println(n);
n++的意義就是對原來變量n的值加1以後再賦值給自身,因為原來變量n的值是0,加1以後則變成1。
同理,遞減運算符的意義也是這樣,示例代碼:
int m = 0;
m--;
System.out.println(m);
m—的意義就是對原來變量m的值減1以後再賦值給自身,則m的值變成-1。
需要注意的是++和—只能操作變量,而不能操作其他的內容,以下使用都是錯誤的:
int a = 0;
int b = 0;
(a + b)++; //錯誤
final int M = 1;
M++; //錯誤
5++; //錯誤
在實際書寫時,++和—既可以寫在變量的前面,也可以寫在變量的後面,例如:
int k = 0;
k++;
++k;
同理,--也可以這樣,那麼這些在實際使用中有什麼區別呢?其實對於變量的值來說,沒有區別,也就是++無論寫後面還是寫前面,變量的值肯定增加1,--無論寫在後面還是前面,變量的值都減1。其最大的區別在於整個式子的值,如n++,規則如下:
1)++或—寫在變量前面,則該式子的值等於變量變化以後的值。
2)++或—寫在變量後面,則該式子的值等於變量變化以前的值。
示例代碼如下:
int n = 1;
int m= 1;
n++; //n的值變為2
++m; //m的值變為2
int k = n++;//n的初始值是2,則n++的值是2,結果n的值為3,k的值為2
int j = ++m; //m的初始值是2,則++m的值是3,結果m的值是3,j的值為3
同理,--也是這樣。
下面是一個稍微綜合點的示例:
int a = 0;
int b = 0;
a = b++;//a為0,b為1
a = ++b;//a為2,b為2
b = a++;//a為3,b為2
a = ++b;//a為3,b為3
說明:注釋部分為對應行代碼運行以後,a和b的值。
在程序開發中,可以使用該區別簡化代碼的書寫,但是不推薦這樣做,因為這樣將增加閱讀代碼的難度。
l +、-
前面介紹過加減運算符,其實+、-還有另外一個意義,也就是代表正負,通常情況下正號可以省略,而負號可以和數值、變量以及運算式進行結合,示例代碼如下:
int a = 0;
int b = 1;
int c = -5;
c = -a;
c = -(a + b);
l? :
這個運算符稱為條件運算符,其作用是根據判斷的結果獲得對應的值,語法格式如下:
條件式 ? 值1 : 值2
語法要求條件式部分必須是boolean類型,可以是boolean值,也可以是boolean變量,或者是關系運算符或邏輯運算符形成的式子,值1和值2必須能夠轉換成相同的類型。
功能說明:如果條件式的結果是true,則整個式子的值取值1的值,否則取值2的值。示例代碼如下:
int x = 10;
int y = 20;
int max = x > y ? x : y;//因為x大於y,則取變量x的值,然後賦值給max
int a = -10;
int abs = a > 0 ? a : -a;//實現求絕對值得功能
l()
括號,也是運算符的一種,作用是可以讓括號內部的計算首先進行,這個和數學上一致,只是程序代碼中可以使用這個組合任意的合法運算式。示例代碼為:
int a = 1 + 2 * 3;
int a = (1 + 2) * 3;//和以上代碼的運行結果不一致
其實每個運算符都有自己的優先級,使用括號可以提升對應式子的優先級。關於運算符優先級的概念,後續將進行介紹。
文章來源:http://blog.csdn.net/Mailbomb/archive/2008/06/02/2502929.aspx