1.操作符
(1)位
&、|、^、~
操作對象:整數(shù)
操作過程:將整數(shù)轉(zhuǎn)為二進(jìn)制罗侯,再運(yùn)算
&:一假皆假
|:一真皆真
^:相同為0器腋,不同為1
~:取反
應(yīng)用:&:判斷整數(shù)是否是二次冪數(shù)。eg:int a=4;if(a&(a-1)==0){syso("a是二次冪數(shù)");}
&:判斷奇偶數(shù)。eg:int a=5;if(a&1==0){syso("是偶數(shù)");}
^:加密纫塌。給一個數(shù)異或一次是加密诊县,異或兩次是解密。
^:判斷同異號措左。a&b>0則為同號依痊,小于0為異號。
(2)位移運(yùn)算
左位移:<<(乘以2的幾次冪)
右位移:>>(除以2的幾次冪)
無符號右移:>>>
原理:
正整數(shù)
左位移:5<<3:5*2^3(1<<3)
求出5的原碼怎披,再去掉前3位數(shù)字胸嘁,再到后面添加3個000
右位移:5>>3:5/2^3
求出5的原碼,再去掉后3位數(shù)字凉逛,再到前面添加3個000
負(fù)整數(shù)
左位移:-5<<3
求出-5的補(bǔ)碼性宏,再去掉前3位數(shù)字,再到后面添加3個000
右位移:-5>>3
求出-5的補(bǔ)碼状飞,再去掉后3位數(shù)字毫胜,再到前面添加3個111
無符號位移>>>:+5>>>3
求出5的原碼(或-5的補(bǔ)碼),再去掉后3位數(shù)字诬辈,再到前面添加3個000
注意點(diǎn):在位移運(yùn)算里酵使,如果移動的位數(shù)大于所操作類型的位數(shù),需要對移動的位數(shù)%該類型的位數(shù)
(3)自增++焙糟、自減--
操作對象:變量(不能是具體的值)
原理:a++和++a的區(qū)別
相同點(diǎn):都是對a進(jìn)行加1
不同點(diǎn):a++操作的是加1前的值口渔,++a操作的是加1后的值
(4)邏輯運(yùn)算
&、|酬荞、^搓劫、~
操作對象:boolean值(true、false)
(5)關(guān)系運(yùn)算
>混巧、<枪向、=、>=咧党、<=秘蛔、!=
2.類型轉(zhuǎn)換
轉(zhuǎn)換規(guī)則:
a傍衡、boolean不參與類型轉(zhuǎn)換
b深员、括號里的類型不會相互轉(zhuǎn)換,只會自動轉(zhuǎn)換成括號外面的類型
(byte ?short ?char) ??int ?long ??float ??double
從左向右為自動轉(zhuǎn)換
從右向左為強(qiáng)制轉(zhuǎn)換蛙埂。
強(qiáng)制轉(zhuǎn)換的類型會出現(xiàn)內(nèi)存溢出:eg
int a03=2100000000;
int a04=2100000000;
int result=a03+a04;
System.out.printIn(result);//內(nèi)存溢出