《Java從小白到大牛精簡版》之第6章 運算符(上)
Java語言中的運算符(也稱操作符)在風格和功能上都與C 和C++極為相似。本章為大家介紹Java語言中一些主要的運算符,包括算術運算符、關系運算符、邏輯運算符、位運算符和其他運算符。
6.1 算術運算符
Java中的算術運算符主要用來組織數值類型數據的算術運算,按照參加運算的操作數的不同可以分為一元運算符和二元運算符。
6.1.1 一元運算符
算術一元運算一共有3個,分別是-、++和–。具體說明參見表6-1。
表6-1一元算術運算
運 算 符 | 名 稱 | 說 明 | 例 子 |
---|---|---|---|
- | 取反符號 | 取反運算 | b = -a |
++ | 自加一 | 先取值再加一,或先加一再取值 | a++或++a |
– | 自減一 | 先取值再減一,或先減一再取值 | a–或–a |
表6-1中,-a是對a取反運算,a++或a–是在表達式運算完後,再給a加一或減一。而++a或–a是先給a加一或減一,然後再進行表達式運算。
示例代碼如下:
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。
6.1.2 二元運算符
二元運算符包括:+、-、*、/和%,這些運算符對數值類型數據都有效,具體說明參見表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.1.3 算術賦值運算符
算術賦值運算符只是一種簡寫,一般用於變量自身的變化,具體說明參見表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
上述例子分別對整型進行了+=、-=、*=、/=和%=運算,具體語句不再贅述。
6.2 關系運算符
關系運算是比較兩個表達式大小關系的運算,它的結果是布爾類型數據,即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.3 邏輯運算符
邏輯運算符是對布爾型變量進行運算,其結果也是布爾型,具體說明參見表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
與本書免費版對應的還有一個收費版本:
進入百度閱讀電子書
進入圖靈社區電子書
本文出自 “「智捷課堂」關東升的博客” 博客,請務必保留此出處http://tonyguan.blog.51cto.com/701759/1981143
《Java從小白到大牛精簡版》之第6章 運算符(上)