java常用運(yùn)算符
Java運(yùn)算符大致分為邏輯運(yùn)算符(&&,||,酪刀!)边琉、算數(shù)運(yùn)算符(+, -, *, / ,+=)倘屹、位運(yùn)算符(^,|,&)银亲、其他運(yùn)算符(三元運(yùn)算符)
注:數(shù)字的二進(jìn)制表示
帶符號(hào)整數(shù)(Integer型,4個(gè)bytes群凶,32個(gè)bits),范圍是-2^31 ~ 2^31-1哄辣,負(fù)數(shù)是正數(shù)的補(bǔ)碼请梢,即反碼+1力穗;
例如:
- 7的二進(jìn)制: 0000 0000 0000 0000 0000 0000 0000 0111
- 7的反碼 : 1111 1111 1111 1111 1111 1111 1111 1000
- -7的二進(jìn)制:1111 1111 1111 1111 1111 1111 1111 1001
&(按位與)
&&(邏輯與)
&&邏輯與也稱為短路邏輯與毅弧,先運(yùn)算&&左邊的表達(dá)式当窗,一旦為假,后續(xù)不管多少表達(dá)式崖面,均不再計(jì)算,一個(gè)為真巫员,再計(jì)算右邊的表達(dá)式庶香,兩個(gè)為真才為真赶掖。
|(按位或)
||(邏輯或)
邏輯或||的運(yùn)算規(guī)則是一個(gè)為真即為真七扰,后續(xù)不再計(jì)算奢赂,一個(gè)為假再計(jì)算右邊的表達(dá)式颈走。
^(異或運(yùn)算符)
<<(左移運(yùn)算符)
右邊補(bǔ)0膳灶;等于乘于2的n次方(好好想想對(duì)不對(duì)A⒂伞! 注:2147483647 << 1)
>>(右移運(yùn)算符)
正數(shù)左邊第一位補(bǔ)0聋迎,負(fù)數(shù)補(bǔ)1;等于除以2的n次方(好好想想對(duì)不對(duì)C乖巍庭再! 注:-7 >> 1)
~(取反運(yùn)算符)
取反就是1為0,0為1,5的二進(jìn)制位是0000 0101牺堰,取反后為1111 1010,值為-6
>>>(無符號(hào)右移運(yùn)算符)
左邊添0
注:
- << 伟葫、>>、<<< 這3個(gè)運(yùn)算符對(duì)于Integer型筏养,它的唯一范圍只能是0 ~ 31中的某個(gè)數(shù),如果不是在這個(gè)范圍的數(shù)字辉浦,你需要將其取32的余數(shù)茎辐,即 3>>33 等價(jià)于 3 >> 1宪郊,或者 3 >> -31 等價(jià)于 3 >> 1拖陆;
- 無符號(hào)右移運(yùn)算符和右移運(yùn)算符的主要區(qū)別在于負(fù)數(shù)的計(jì)算依啰,因?yàn)闊o符號(hào)右移是高位補(bǔ)0乎串,移多少位補(bǔ)多少個(gè)0孔飒,而右移運(yùn)算符是對(duì)于負(fù)數(shù)需要高位補(bǔ)1坏瞄,即-7 >> 1 是 -4 , -7 >>> 1 是 2147483644鸠匀;