java學(xué)習(xí)系列(四)Java基本語法02
原創(chuàng)2022-02-10 09:50·白眼黑刺猬
1.1. 運(yùn)算符
1.1.1. 賦值運(yùn)算符
符號(hào):= , +=, -=, *=, /=, %=
例子1:加號(hào)和賦值符號(hào)是可以合在一起使用的。
例子2:比較s += 4;和s = s + 4;的不同。
在執(zhí)行s+=4;語句時(shí),編譯器在編譯的時(shí)候,默認(rèn)進(jìn)行了強(qiáng)制類型轉(zhuǎn)換,也就是將int類型的數(shù)據(jù)轉(zhuǎn)換成byte類型的數(shù)據(jù)。
在執(zhí)行s = s + 4;語句時(shí),編譯器在編譯的時(shí)候,默認(rèn)并沒有強(qiáng)制類型轉(zhuǎn)換。所以,s是short類型,4是int類型,s會(huì)自動(dòng)提升為int類型,相加的和也是int類型,賦值給short類型的變量肯定會(huì)損失精度。這時(shí)候就需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換:s = (short)(s + 4);。
1.1.2. 比較運(yùn)算符
注意:
1、比較運(yùn)算符的結(jié)果都是boolean型,也就是要么是true,要么是false。
2、比較運(yùn)算符“==”不能誤寫成“=” 。
例子:
1.1.3. 邏輯運(yùn)算符
"&"符號(hào)的運(yùn)算特點(diǎn):
true & true = true;
true & false = false;
false & true = false;
false & false = false;
"&"符號(hào)運(yùn)算規(guī)律:
運(yùn)算的兩邊只要有一個(gè)是false,結(jié)果肯定是false。
只有兩邊都為true,結(jié)果才是true。
例子1:
"|"符號(hào)的運(yùn)算特點(diǎn):
true | true = true;
true | false = true;
false | true = true;
false | false = false;
"|"符號(hào)運(yùn)算規(guī)律:
運(yùn)算的兩邊只要有一個(gè)是true,結(jié)果肯定是true。
只有兩邊都為false,結(jié)果是false。
例子2:
"^"符號(hào)的運(yùn)算特點(diǎn):
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;
"^"符號(hào)運(yùn)算規(guī)律:
^符號(hào)的兩邊結(jié)果如果相同,結(jié)果是false。
兩邊的結(jié)果不同,結(jié)果是true。
例子3:
"!"符號(hào)運(yùn)算規(guī)律:
true = false
!false = true
!!true = true;
例子4:
注意:
&&:和&運(yùn)算的結(jié)果是一樣的,但是運(yùn)算過程有點(diǎn)小區(qū)別。
&:無論左邊的運(yùn)算結(jié)果是什么,右邊都參與運(yùn)算。
&&:當(dāng)左邊為false時(shí),右邊不參加運(yùn)算,這樣可以提升效率
||:和|運(yùn)算的結(jié)果是一樣的,但是運(yùn)算過程有點(diǎn)小區(qū)別。
|:無論左邊的運(yùn)算結(jié)果是什么,右邊都參與運(yùn)算。
||:當(dāng)左邊為true時(shí),右邊不參加運(yùn)算,這樣可以提升效率。
使用&&和||比使用&和|更高效一些。
注意:
邏輯運(yùn)算符用于連接布爾型表達(dá)式,在Java中不可以寫成33 & x<6 。
1.1.4. 位運(yùn)算符
位運(yùn)算是直接對(duì)二進(jìn)制位進(jìn)行運(yùn)算。
與運(yùn)算例子:
6 & 3 = 2
110
& 011
-------
010
技巧:
用“與運(yùn)算”可以很方便提取某一二進(jìn)制數(shù)的其中幾位數(shù)。
例如,取17476二進(jìn)制數(shù)的后四位:
0100010001000100
& 0000000000001111
------------------------
0000000000000100
或運(yùn)算例子:
6 | 3 = 7
110
| 011
--------
111
異或運(yùn)算例子:
6 ^ 3 = 5
110
^ 011
-------
101
注意:
一個(gè)數(shù)異或同一個(gè)數(shù)兩次,結(jié)果還是這個(gè)數(shù)。
例如:
6 ^ 3 ^ 3 = 6
6 ^ 3 = 5
110
^ 011
-------
101
^ 011
-------
110
技巧:
利用異或運(yùn)算可以實(shí)現(xiàn)對(duì)數(shù)據(jù)簡(jiǎn)單地進(jìn)行加密,例如對(duì)一幅圖片的所有數(shù)據(jù)異或3進(jìn)行加密,那么這幅圖片就無法查看了。解密只需要再對(duì)圖片的數(shù)據(jù)執(zhí)行異或3操作即可。
取反運(yùn)算例子:
左移運(yùn)算例子:
3 << 2 = 12 相當(dāng)于 3 * 2(2) = 12
00000000000000000000000000000011
00000000000000000000000000001100
3 << 3 = 24 相當(dāng)于 3 * 2(3) = 24
00000000000000000000000000000011
00000000000000000000000000011000
總結(jié):
左移幾位其實(shí)就是該數(shù)據(jù)乘以2的幾次方。
<<:可以完成2的次冪運(yùn)算。
右移運(yùn)算例子:
6 >> 1 = 3 相當(dāng)于 6/2(1)=3
00000000000000000000000000000110
00000000000000000000000000000011
6 >> 2 = 1 相當(dāng)于 6/2(2) = 1
00000000000000000000000000000110
00000000000000000000000000000001
總結(jié):
右移幾位其實(shí)就是該數(shù)據(jù)除以2的幾次冪。
附:
以上例子中括號(hào)表示次冪的意思。
注意:
>>:對(duì)于高位出現(xiàn)的空位,原來高位是什么,就用什么補(bǔ)這個(gè)空位。
>>>:無符號(hào)右移,數(shù)據(jù)進(jìn)行右移時(shí),高位出現(xiàn)的空位,無論原高位是什么,空位都用0補(bǔ)。
練習(xí):
1.最有效率的方式算出2乘以8等于幾?
答案:
2.對(duì)兩個(gè)整數(shù)變量的值進(jìn)行互換(可以使用第三方變量)。
答案:
3.對(duì)兩個(gè)整數(shù)變量的值進(jìn)行互換(不可以使用第三方變量)。
答案1:
答案2:
1.1.5. 三元運(yùn)算符
格式:
(條件表達(dá)式) ? 表達(dá)式1 : 表達(dá)式2;
如果條件為true,運(yùn)算后的結(jié)果是表達(dá)式1;
如果條件為false,運(yùn)算后的結(jié)果是表達(dá)式2。
示例1:
示例2:
獲取兩個(gè)整數(shù)中的較大的整數(shù)。
示例3:
獲取三個(gè)整數(shù)中的較大的整數(shù)。
注意:
表達(dá)式:就是具有一定語法規(guī)則的語句。