做外貿(mào)怎樣免費(fèi)登錄外國網(wǎng)站網(wǎng)頁設(shè)計首頁制作
提綱1:常見的位運(yùn)算使用場景
提綱2:整數(shù)類型運(yùn)算時的類型溢出問題,產(chǎn)生原因以及解決辦法
提綱3:浮點類型運(yùn)算時的精度丟失問題,產(chǎn)生原因以及解決辦法
數(shù)值類型(6種)分為:
整型(整數(shù)):byte 字節(jié)型,占1個字節(jié)? short 短整型,占2個字節(jié)? int 整型, 占4個字節(jié)(默認(rèn))
long 長整型,占8個字節(jié)
浮點型(小數(shù)):float 單精度浮點數(shù),占4個字節(jié)? double 雙精度浮點數(shù),占8個字節(jié)(默認(rèn))
運(yùn)算方式:
1.算術(shù)運(yùn)算符:+? -? *? /? %
注意1:數(shù)值類型使用算術(shù)運(yùn)算符,運(yùn)算結(jié)果任然為數(shù)值
注意2:整數(shù)之間使用“\”,進(jìn)行整除運(yùn)算
注意3:整數(shù)不能為“零”
注意4:防止“類型溢出”
整數(shù)類型運(yùn)算時的類型溢出問題,產(chǎn)生原因以及解決辦法
產(chǎn)生原因:
固定范圍:Java的整數(shù)類型有固定的范圍。例如,int類型的范圍是-2^31到2^31-1(包括負(fù)數(shù),因為Java使用二進(jìn)制補(bǔ)碼表示法)。如果運(yùn)算結(jié)果超出這個范圍,就會發(fā)生溢出。
算術(shù)運(yùn)算:任何可能產(chǎn)生超出范圍結(jié)果的算術(shù)運(yùn)算(加法、減法、乘法)都可能導(dǎo)致溢出。
類型轉(zhuǎn)換:將一個范圍較大的整數(shù)類型強(qiáng)制轉(zhuǎn)換為范圍較小的整數(shù)類型時,如果值超出目標(biāo)類型的范圍,也會發(fā)生溢出。解決辦法:
整數(shù)類型運(yùn)算時遇到的類型溢出問題,可以使用BigInteger來解決
浮點類型運(yùn)算時的精度丟失問題,產(chǎn)生原因以及解決辦法
產(chǎn)生原因:
是因為計算機(jī)內(nèi)部是通過二進(jìn)制形式來保存浮點數(shù)的,無法精確的表示十進(jìn)制的小數(shù),所以會產(chǎn)生精度丟失的問題。具體情況如下:
十進(jìn)制的小數(shù)在進(jìn)行二進(jìn)制轉(zhuǎn)換時,整數(shù)部分會除二取余,小數(shù)部分會乘二取整,在乘二取整的過程中,會產(chǎn)生無限循環(huán)的情況,所以就出現(xiàn)了精度丟失。解決辦法:
浮點類型運(yùn)算時遇到的精度丟失問題,可以使用BigDecimal來解決
注意5:浮點數(shù)運(yùn)算時,除數(shù)為零
System.out.println(-5.0/0); //結(jié)果為Infinity或-InfinitySystem.out.println(0.0/0); //結(jié)果為NaN
2.位運(yùn)算:
1)<<? (左移)>> (右移)位移運(yùn)算:左移變大,右移變小
int number=100;
System.out.println(number<<3);//向左移3位相當(dāng)于n*2^3
System.out.println(number>>3);//向右移3位相當(dāng)于n/2^3//在原有基礎(chǔ)上,計算1.5 倍的增長
int cap=16;
int newCap1=(int)(cap*1.5);//算術(shù)運(yùn)算符
int newCap2=cap+(cap>>1);//位運(yùn)算符
System.out.println(newCap1);
System.out.println(newCap2);
2)位運(yùn)算:&運(yùn)算
運(yùn)算規(guī)則:同時為1 結(jié)果為1 否則為0
常見的位運(yùn)算使用場景:
1.判斷奇偶數(shù):位運(yùn)算可以用于判斷一個整數(shù)是奇數(shù)還是偶數(shù)。一個整數(shù)與1進(jìn)行位與運(yùn)算,如果結(jié)果為0,則該整數(shù)為偶數(shù);如果結(jié)果為1,則該整數(shù)為奇數(shù)
2.快速的計算:位運(yùn)算可以用于實現(xiàn)一些簡單的乘法和除法運(yùn)算。例如,乘以2可以通過左移一位來實現(xiàn),除以2可以通過右移一位來實現(xiàn)。
3.哈希值的計算:在哈希算法中,位運(yùn)算也經(jīng)常被使用。例如,Java的HashMap在實現(xiàn)其hash方法時,就使用了右移運(yùn)算符(>>>)。
4.交換變量值:位運(yùn)算可以用于交換兩個變量的值。你可以使用異或(^)運(yùn)算和位與(&)運(yùn)算來實現(xiàn)這一點。
lass demo02 {public static void main(String[] args) {int a = 5;int b = 10;System.out.println("交換前:");System.out.println("a = " + a);System.out.println("b = " + b);// 使用異或運(yùn)算交換a和b的值a = a ^ b;b = a ^ b;a = a ^ b;System.out.println("交換后:");System.out.println("a = " + a);System.out.println("b = " + b);}}運(yùn)行結(jié)果: 交換前: a = 5 b = 10 交換后: a = 10 b = 5
5.整數(shù)絕對值:位運(yùn)算也可以用于計算整數(shù)的絕對值。通過異或(^)運(yùn)算和右移(>>)運(yùn)算,我們可以得到一個整數(shù)的絕對值。
3.關(guān)系運(yùn)算符:>? <? >=? <=? ==? !=
運(yùn)算規(guī)則:數(shù)值類型之間運(yùn)算,運(yùn)算結(jié)果為boolean
4.邏輯運(yùn)算符:&&(與)? || (或) !(非)
運(yùn)算規(guī)則:布爾類型之間運(yùn)算,結(jié)果為boolean
&&運(yùn)算:同時為true 結(jié)果為true 否則為false
||運(yùn)算:同時為false 結(jié)果為false 否則為true
!運(yùn)算:false為true? true為false
5.三元運(yùn)算符:條件表達(dá)式?表達(dá)式1:表達(dá)式2
int a=7 ,b=13 ,c=91;//3個變量排序//最大值int max=(a>b) ? (a>c ? a : c) :(b>c ? b : c);//最小值int min=(a<b) ? (a<c ? a : c) :(b<c ? b : c);//中間值int mid=(a+b+c)-max-min;System.out.println(max);System.out.println(mid);System.out.println(min);
?
?
?
?