第五章 Java運算符和表達式
定義:運算符是指具有運算功能的符號。參與運算的數據稱爲操作數。運算符和操作數按照一定的規則組成的式子稱爲表達式。
運算符的分類:
根據操作數個數不同分類:單目運算符(一元運算符)、雙目運算符(二元運算符)、三目運算符(三元運算符)
根據性質或用途不同分類:算術運算符(+、-、*、/、%、++、--)、關係運算符(>、<、>=、<=、= =、!=)、邏輯運算符(!、&&、||)、位運算符(>>、<<、>>>、&、|、∧、~)、賦值運算符(=、+=、—=、*=、/=、%=等)、條件運算符(?和:成對使用)
算術運算符與算術表達式
分類 | 運算符 | 名稱 | 示例 | 描述 |
雙 目 運 算 符 | + | 加法 | A+B | A加B |
- | 減法 | A-B | A減B | |
* | 乘法 | A*B | A乘以B | |
/ | 除法 | A/B | A除以B | |
% | 取餘運算 | A%B | A除以B取餘數 | |
單 目 運 算 符 | + | 正號 | +A | 正A |
- | 負號 | -A | 負A | |
++ | 自增 | ++A,A++ | A自加1 | |
-- | 自減 | --A,A-- | A自減1 |
整型數據在進行除法(/)運算時,結果只保留值的整數部分。
單目運算符中的自增和自減運算符位於操作數左側和右側是不同的。二者區別:位於左側時,操作數先自增或自減 1後再使用操作數;位於右側時,先使用操作數,再使操作數自增或自減1。
關係運算符與關係表達式
運算符 | 名稱 | 示例 | 描述 | |
== | 等於 | A==B | A等於B嗎 | |
!= | 不等於 | A!=B | A不等於B嗎 | |
> | 大於 | A>B | A大於B嗎 | |
< | 小於 | A<B | A小於B嗎 | |
>= | 大於等於 | A>=B | A大於等於B嗎 | |
<= | 小於等於 | A<=B | A小於等於B嗎 |
關係表達式的運算次序是先分別算出運算符兩側的值,再把二者作比較。
字符型數據按其在Unicode標準字符集中的位置值進行比較。常見字符的位置值由小到大順序是:空格<'0'<... <'9'<'A'<...<'Z'<'a'<...<"z"<任何漢字。
邏輯運算符
運算符 | 名稱 | 示例 | 描述 | |
! | 邏輯非 | !A | A爲true時結果爲false,A爲false時結果爲true | |
&& | 邏輯與 | A&&B | A、B同爲true時結果爲true,否則爲false | |
|| | 邏輯或 | A||B | A、B同爲false時結果爲false,否則爲true | |
∧ | 邏輯異或 | A∧B | A、B同爲true或同爲false時結果爲false,否則結果爲true |
“&&”和“||”又稱爲“短路與”和“短路或”。如果“&&”左邊表達式值爲false,則整個表達式的值爲false, 編譯器不再運算右邊的表達式。同樣,如果“||”左邊的表達式值爲true,則整個表達式的值爲true,編譯器不 再運算右邊的表達式。
賦值運算符:Java中的“=”表示的是賦值運算符,不同於數學中的等號(Java中表示等於的運算符是用兩個連在 一起的等號(“==”)表示)。例如表達式 A+=B 表示 A=A+B,意思是A加B後的值賦值給A。
位運算符:Java中提供了可以直接對二進制數進行操作的位運算符。“~”表示按位取反,“&”表示按位與運 算,“|”表示按位或運算,“∧”按位異或,“<<”左移,“>>”帶符號右移,“>>>”無符號右移。
計算機系統中爲了便於對數值進行處理,數值一律用補碼錶示。其中,正數的補碼與原碼相同,符號位爲0,例如 +9的補碼爲00001001;負數的補碼爲:符號位爲1,其餘位數該數絕對值的原碼按位取反,然後整個數加1。例如: 對於-7來說,符號位爲1,+7的原碼爲0000111(除去符號位,剩下7位),取反後得到1111000,加1得到1111001, 則-7的補碼爲11111001。
在不溢出的情況下,左移運算相當於乘運算,左移n位相當於該操作數乘以2的n次方;右移運算相當於除運算,右 移n位相當於該操作數除以2的n次方。
條件運算符:expression1?expression12:expression13;
表達式expression1的值必須爲布爾型,表達式expression12和expression13的值可以爲任意類 型,且類型可以不同。
條件表達式的值取決於expression1的判斷結果,如果expression1結果爲true,則執行表達式2, 否則執行表達式3。