《Java從小白到大牛》紙質版已經上架了!!!html
Java語言中的運算符(也稱操做符)在風格和功能上都與C 和C++極爲類似。本章爲你們介紹Java語言中一些主要的運算符,包括算術運算符、關係運算符、邏輯運算符、位運算符和其餘運算符。java
Java中的算術運算符主要用來組織數值類型數據的算術運算,按照參加運算的操做數的不一樣能夠分爲一元運算符和二元運算符。web
算術一元運算一共有3個,分別是-、++和–。具體說明參見表6-1。編程
表6-1一元算術運算app
運 算 符 | 名 稱 | 說 明 | 例 子 |
---|---|---|---|
- | 取反符號 | 取反運算 | b = -a |
++ | 自加一 | 先取值再加一,或先加一再取值 | a++或++a |
– | 自減一 | 先取值再減一,或先減一再取值 | a–或–a |
表6-1中,-a是對a取反運算,a++或a–是在表達式運算完後,再給a加一或減一。而++a或–a是先給a加一或減一,而後再進行表達式運算。ide
示例代碼以下:優化
int a = 12; System.out.println(-a); ①int b = a++; ② System.out.println(b); b = ++a; ③ System.out.println(b);1234567
輸出結果以下:編碼
-12 12 141234
上述代碼第①行是-a,是把a變量取反,結果輸出是-12。第②行代碼是先把a賦值給b變量再加一,即先賦值後++,所以輸出結果是12。第③行代碼是把a加一,而後把a賦值給b變量,即先++後賦值,所以輸出結果是14。spa
二元運算符包括:+、-、*、/和%,這些運算符對數值類型數據都有效,具體說明參見表6-2。
表6-2二元算術運算
運 算 符 | 名 稱 | 說 明 | 例 子 |
---|---|---|---|
+ | 加 | 求a加b的和,還可用於String類型,進行字符串鏈接操做 | a + b |
- | 減 | 求a減b的差 | a - b |
* | 乘 | 求a乘以b的積 | a * b |
/ | 除 | 求a除以b的商 | a / b |
% | 取餘 | 求a除以b的餘數 | a % b |
示例代碼以下:
//聲明一個字符類型變量char charNum = 'A'; // 聲明一個整數類型變量int intResult = charNum + 1; ① System.out.println(intResult); intResult = intResult - 1; System.out.println(intResult); intResult = intResult * 2; System.out.println(intResult); intResult = intResult / 2; System.out.println(intResult); intResult = intResult + 8; intResult = intResult % 7; System.out.println(intResult); System.out.println("-------");// 聲明一個浮點型變量double doubleResult = 10.0; System.out.println(doubleResult); doubleResult = doubleResult - 1; System.out.println(doubleResult); doubleResult = doubleResult * 2; System.out.println(doubleResult); doubleResult = doubleResult / 2; System.out.println(doubleResult); doubleResult = doubleResult + 8; doubleResult = doubleResult % 7; System.out.println(doubleResult);12345678910111213141516171819202122232425262728293031323334353637
輸出結果以下:
66 65 130 65 3 ------- 10.0 9.0 18.0 9.0 3.0123456789101112
上述例子中分別對數值類型數據進行了二元運算,其中代碼第①行將字符類型變量charNum與整數類型進行加法運算,參與運算的該字符('A')的Unicode編碼65。其餘代碼比較簡單再也不贅述。
算術賦值運算符只是一種簡寫,通常用於變量自身的變化,具體說明參見表6-3。
表6-3 算術賦值符
運 算 符 | 名 稱 | 例 子 |
---|---|---|
+= | 加賦值 | a += b、a += b+3 |
-= | 減賦值 | a -= b |
*= | 乘賦值 | a *= b |
/= | 除賦值 | a /= b |
%= | 取餘賦值 | a %= b |
示例代碼以下:
int a = 1;int b = 2; a += b; // 至關於 a = a + bSystem.out.println(a); a += b + 3; // 至關於 a = a + b + 3System.out.println(a); a -= b; // 至關於 a = a - bSystem.out.println(a); a *= b; // 至關於 a=a*bSystem.out.println(a); a /= b; // 至關於 a=a/bSystem.out.println(a); a %= b; // 至關於 a=a%bSystem.out.println(a);123456789101112131415161718
輸出結果以下:
3 8 6 12 6 01234567
上述例子分別對整型進行了+=、-=、*=、/=和%=運算,具體語句再也不贅述。
關係運算是比較兩個表達式大小關係的運算,它的結果是布爾類型數據,即true或false。關係運算符有6種:==、!=、>、<、>=和<=,具體說明參見表6-4。
表6-4 關係運算符
[圖片上傳失敗…(image-24a409-1510533942975)]
**提示 ==和!=能夠應用於基本數據類型和引用類型。當用於引用類型比較時,比較的是兩個引用是否指向同一個對象,但當時實際開發過程多數狀況下,只是比較對象的內容是否至關,不須要比較是否爲同一個對象。
**
示例代碼以下:
int value1 = 1;int value2 = 2;if (value1 == value2) { System.out.println("value1 == value2"); }if (value1 != value2) { System.out.println("value1 != value2"); }if (value1 > value2) { System.out.println("value1 > value2"); }if (value1 < value2) { System.out.println("value1 < value2"); }if (value1 <= value2) { System.out.println("value1 <= value2"); }1234567891011121314151617181920212223
運行程序輸出結果以下:
value1 != value2 value1 < value2 value1 <= value21234
邏輯運算符是對布爾型變量進行運算,其結果也是布爾型,具體說明參見表6-5。
表6-5 邏輯運算符
[圖片上傳失敗…(image-6280e7-1510533942975)]
提示 短路與(&&)和短路或(||)可以採用最優化的計算方式,從而提升效率。在實際編程時,應該優先考慮使用短路與和短路或。
示例代碼以下:
int i = 0;int a = 10;int b = 9;if ((a > b) || (i == 1)) { ① System.out.println("或運算爲 真"); } else { System.out.println("或運算爲 假"); }if ((a < b) && (i == 1)) { ② System.out.println("與運算爲 真"); } else { System.out.println("與運算爲 假"); }if ((a > b) || (a++ == --b)) { ③ System.out.println("a = " + a); System.out.println("b = " + b); }1234567891011121314151617181920
上述代碼運行輸出結果以下:
或運算爲 真 與運算爲 假123
其中,第①行代碼進行短路計算,因爲(a > b)是true,後面的表達式(i == 1)再也不計算,輸出的結果爲真。相似地,第②行代碼也進行短路計算,因爲(a < b)是false,後面的表達式(i == 1)再也不計算,輸出的結果爲假。
代碼第③行中在條件表達中摻雜了++和—運算,因爲(a > b)是true,後面的表達式(a++ == –b)再也不計算,因此最後是a = 10, b = 9。若是把短路或(||)改成邏輯或(|),那麼輸出的結果就是a = 11, b = 8了。
http://edu.51cto.com/topic/1246.html
http://www.51work6.com/book/java1.php