運(yùn)算符是用來計(jì)算數(shù)據(jù)的符號。數(shù)據(jù)可以是常量,也可以是變量。被運(yùn)算符操作的數(shù)我們稱為操作數(shù)。
1.算術(shù)運(yùn)算符
算術(shù)運(yùn)算符最常見的操作就是將操作數(shù)參與數(shù)學(xué)計(jì)算,
+,-,*,/,%,++,--
+的用法
a:加法
b:正號
c:字符串連接符
/和%的區(qū)別
數(shù)據(jù)做除法操作的時(shí)候,/取得是商,%取得是余數(shù)
++和--的用法
a:他們的作用是自增或者自減
b:使用
單獨(dú)使用
放在操作數(shù)據(jù)的前面和后面效果一樣。
a++或者++a效果一樣。
參與操作使用
放在操作數(shù)的前面:先自增或者自減,再參與操作
int a = 10;
int b = ++a;
放在操作數(shù)的后面:先參與操作,再自增或者自減
int a = 10;
int b = a++;
注意:
- 加法運(yùn)算符在連接字符串時(shí)要注意,只有直接與字符串相加才會轉(zhuǎn)成字符串。
- 除法“/”當(dāng)兩邊為整數(shù)時(shí),取整數(shù)部分,舍余數(shù)。當(dāng)其中一邊為浮點(diǎn)型時(shí),按正常規(guī)則相除。
- “%”為整除取余符號,小數(shù)取余沒有意義。結(jié)果符號與被取余符號相同。
- 整數(shù)做被除數(shù),0不能做除數(shù),否則報(bào)錯(cuò)。
2.賦值運(yùn)算符
賦值運(yùn)算符就是為變量賦值的符號
A:=,+=,-=,*=,/=,%=等
B:=叫做賦值運(yùn)算符,也是最基本的賦值運(yùn)算符
int x = 10; 把10賦值給int類型的變量x。
C:擴(kuò)展的賦值運(yùn)算符的特點(diǎn):
隱含了自動強(qiáng)制轉(zhuǎn)換。
注意:賦值運(yùn)算符左邊必須是變量
面試題:
short s = 1;
s = s + 1;
short s = 1;
s += 1;
請問上面的代碼哪個(gè)有問題?
3.比較運(yùn)算符
比較運(yùn)算符,又叫關(guān)系運(yùn)算符,它是用來判斷兩個(gè)操作數(shù)的大小關(guān)系及是否相等關(guān)系的,結(jié)果是布爾值true或者false。
A:==,!=,>,>=,<,<=
B:無論運(yùn)算符兩端簡單還是復(fù)雜最終結(jié)果是boolean類型。
C:千萬不要把==寫成了=
4.邏輯運(yùn)算符(條件運(yùn)算符)
邏輯運(yùn)算符,它是用于布爾值進(jìn)行運(yùn)算的,運(yùn)算的最終結(jié)果為布爾值true或false。
A:&,|,^,!,&&,||
B:邏輯運(yùn)算符用于連接boolean類型的式子
C:結(jié)論
&:有false則false
|:有true則true
^:相同則false,不同則true。
情侶關(guān)系。
!:非true則false,非false則true
&&:結(jié)果和&是一樣的,只不過有短路效果。左邊是false,右邊不執(zhí)行。
||:結(jié)果和|是一樣的,只不過有短路效果。左邊是true,右邊不執(zhí)行。
5.三元運(yùn)算符
A:格式
比較表達(dá)式?表達(dá)式1:表達(dá)式2;
B:執(zhí)行流程:
首先計(jì)算比較表達(dá)式的值,看是true還是false。
如果是true,表達(dá)式1就是結(jié)果。
如果是false,表達(dá)式2就是結(jié)果。
C:案例:
a:比較兩個(gè)數(shù)據(jù)是否相等
b:獲取兩個(gè)數(shù)據(jù)中的最大值
c:獲取三個(gè)數(shù)據(jù)中的最大值
6.位運(yùn)算符
按位異或 ^
???????????僅當(dāng)兩個(gè)操作數(shù)不同一時(shí)候。輸出結(jié)果才為1,否則為0.
12 的二進(jìn)制為 1100
5 的二進(jìn)制為 0101
則 12 | 5 的二進(jìn)制為 1001。則完整的運(yùn)算式為 12 & 5 = 9
A:^的特殊用法
????????????一個(gè)數(shù)據(jù)針對另一個(gè)數(shù)據(jù)位異或兩次,該數(shù)不變
B:面試題
a:請實(shí)現(xiàn)兩個(gè)變量的交換
**采用第三方變量
**用位異或運(yùn)算符
左邊a,b,a
右邊a^b
b:請用最有效率的方式計(jì)算出2乘以8的結(jié)果
2<<3
按位或 |
按位與 &
按位非~(按位取反)
?????????~的作用是各位數(shù)字取反
注意:
????????位運(yùn)算符操作的都是數(shù)值的二進(jìn)制補(bǔ)碼,數(shù)字的真正值都需要轉(zhuǎn)為原碼.
移位運(yùn)算符
<<
左邊數(shù)據(jù)×2的移動次冪;
空位補(bǔ)零,移除的最高位丟棄;
>>
左邊數(shù)據(jù)÷2的移動次冪
右移時(shí),符號位將隨同移動,為正時(shí),最高位為0,補(bǔ)0;為負(fù)時(shí),最高位為1,最高位補(bǔ)1
>>>
無論最高位是0,還是1,左邊移空的都補(bǔ)零;
7.運(yùn)算符優(yōu)先級
| 優(yōu)先級 | 描述 | 運(yùn)算符 |
|---|---|---|
| 1 | 括號 | ()、[] |
| 2 | 正負(fù)號 | +、- |
| 3 | 自增自減,非 | ++、--、! |
| 4 | 乘除,取余 | *、/、% |
| 5 | 加減 | +、- |
| 6 | 移位運(yùn)算 | <<、>>、>>> |
| 7 | 大小關(guān)系 | >、>=、<、<= |
| 8 | 相等關(guān)系 | ==、!= |
| 9 | 按位與 | & |
| 10 | 按位異或 | ^ |
| 11 | 按位或 | | |
| 12 | 邏輯與 | && |
| 13 | 邏輯或 | || |
| 14 | 條件運(yùn)算 | ?: |
| 15 | 賦值運(yùn)算 | =、+=、-=、*=、/=、%= |
| 16 | 位賦值運(yùn)算 | &=、|=、<<=、>>=、>>>= |
在開發(fā)過程中一般使用()來區(qū)別,運(yùn)算優(yōu)先級.