1.操作符
(1)位
&、|、^、~
操作對象:整數(shù)
操作過程:將整數(shù)轉(zhuǎ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)位移運算
左位移:<<(乘以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
負整數(shù)
左位移:-5<<3
求出-5的補碼,再去掉前3位數(shù)字,再到后面添加3個000
右位移:-5>>3
求出-5的補碼,再去掉后3位數(shù)字,再到前面添加3個111
無符號位移>>>:+5>>>3
求出5的原碼(或-5的補碼),再去掉后3位數(shù)字,再到前面添加3個000
注意點:在位移運算里,如果移動的位數(shù)大于所操作類型的位數(shù),需要對移動的位數(shù)%該類型的位數(shù)
(3)自增++、自減--
操作對象:變量(不能是具體的值)
原理:a++和++a的區(qū)別
相同點:都是對a進行加1
不同點:a++操作的是加1前的值,++a操作的是加1后的值
(4)邏輯運算
&、|、^、~
操作對象:boolean值(true、false)
(5)關(guā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)換
從右向左為強制轉(zhuǎn)換。
強制轉(zhuǎn)換的類型會出現(xiàn)內(nèi)存溢出:eg
int a03=2100000000;
int a04=2100000000;
int result=a03+a04;
System.out.printIn(result);//內(nèi)存溢出