一些運算符
<<n ?左移 二進制數(shù)向左移動n位,右邊用0補齊n位入录,相當(dāng)于 原值*2^n
>>n ?有符號右移 二進制數(shù)向右移動n位塔橡,保留符號位,左邊其余n-1用0補齊启盛,相當(dāng)于 原值/2^n
>>>n 無符號右移 二進制數(shù)向右移動n位蹦掐,左邊用0補齊n位
| ?按位或 0|0=0,0|1=1僵闯,1|0=1卧抗,1|1=1
& 按位與 0&0=0,0&1=0鳖粟,1&0=0社裆,1&1=1
^ ?按位異或 0^0=0,0^1=1向图,1^0=1泳秀,1^1=0
~ ?取反 ?對二進制位取反 ~0=1,~1=0
int型的存儲方式
java無無符號類型
計算機以補碼形式存儲數(shù)值
原因:
1.原碼中1000 0000和0000 0000都表示0榄攀,所以在補碼中人為規(guī)定1000 0000表示-2^7(-128)
2.計算機CPU只有加法器嗜傅,對于正負數(shù)相加會出現(xiàn)問題。
如:1+(-1)=0 以原碼形式存儲 0001+(1001)=1010 為-2
若以補碼形式存儲 0001+(1111)=0000 為0
原碼 最高位為符號位檩赢,1表示負數(shù)吕嘀,0表示正數(shù)
如 +1=0000 0001 ? ? ?-1=1000 0001
反碼 (以8位舉例:正數(shù)+負數(shù)=1111 1111)
正數(shù)的反碼即原碼本身
負數(shù)的反碼為最高位符號位不變,其余位取反
如 +1=0000 0001 ? ? ?-1=1111 1110
補碼
正數(shù)的補碼即原碼本身
負數(shù)的補碼為最高位符號位不變贞瞒,其余位取反偶房,后加1
如 +1=0000 0001? ? ? -1=1111 1111
泛型
引入緣由:使集合能記住集合元素各類型,且能夠達到編譯時不出現(xiàn)問題憔狞,運行時就不會出現(xiàn)java.lang.ClassCastException異常
參數(shù)化類型 將類型由原來的具體的類型參數(shù)化蝴悉,類似于方法中的變量參數(shù),將類型也定義參數(shù)形式瘾敢,后在使用時傳入具體的類型
自定義泛型接口、泛型類、泛型方法
類名<T> T簇抵、E庆杜、K、V等形式參數(shù)都常用于表示泛型形參
類中方法或變量要使用該類型碟摆,在定義時即由T等形式參數(shù)指明
如:
但泛型在邏輯上是多個不同的類型晃财,實際上是相同的基本類型
具體只作用于代碼編譯階段,在編譯過程中典蜕,對于正確檢驗泛型結(jié)果后断盛,會將泛型的相關(guān)內(nèi)容擦除,所以泛型信息不會進行到運行時階段
類型通配符 為泛型類提供一個父類的引用
一般使用愉舔?代替類型實參
類名<?> 邏輯上是 類名<具體類型實參> 的父類
為對類型通配符有更進一步的限制提出
類型通配符上限 類名<? extends 類型> 聲明為exends后類型及其子類
類型通配符下限 類名<? super 類型> 聲明為super后類型及其父類