Java編程那些事兒27—其它運算子鄭州遊戲學院 陳躍峰出自:http://blog.csdn.net/mailbomb
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; //和以上代碼的運行結果不一致其實每個運算子都有自己的優先順序,使用括弧可以提升對應式子的優先順序。關於運算子優先順序的概念,後續將進行介紹。