java中的補碼,
1.在計算機系統中,數值一律用二進位制的補碼來儲存的。
2.二進位制的最高位是符號位,0表示正數,1表示負數。
3.正數的值是其本身,負數的值是最高位(符號位)不變,其他的位逐位取反,再加1;
將正的十進位制數除以二,得到的商再除以二,依次類推知道商為零或一時為止,然後在旁邊標出各步的餘數,最後倒著寫出來,高位補零就OK
比如:-11100;---這個是真值,---我們是以8位的進行出來位數的
原碼:就是轉化正常二進位制的資料,
1. 10011100 ---- (-10011100的原碼)
2. 先得到絕對值的原碼 ----00011100
取反+1 -------11100011+1——>11100100
對應我們使用---轉換工具:比如:http://tool.oschina.net/hexconvert/
這些都是不考慮最高位的符號的,---所以我們也不要感到懷疑,(比如:127 -127怎麼轉換成二進位制的時候,沒有什麼變化,只在最前面加的了一個負號(-))
下面是一些概念性的東西:
1. 原碼、反碼、補碼:
(1)在Java中,所有資料的表示方式都是以補碼形式來表示
(2)正數:原碼、反碼、補碼相同
(3)負數:符號位為1,其餘各位是對原碼取反,然後整個數加1
(4)~按位取反(反碼加1稱為補碼。)步驟就是先求出這個數(因為java存的數是補碼)的原碼,然後對原碼取反得到X,這個X就是我們要求的那個數的補的
2,在switch語句中,一定要,在美國case選項中,寫不break,不然很容易出現 “貫穿” 的現象發生,,就是case的每個語句都執行,
3.邏輯運算中的 與 或 非 這個3個區別
長路與 (&) a&b 比如這個,這個表示式的左右兩邊都要進行判斷,然後,再進行最終的判斷,
短路與(&&) a&&b 比如這個,在判斷這個的時候, 只要有一個是false,後面的另外一個判斷都可以不用判斷了,直接就出結果
長路或運算(|):將二邊 關係運算的結果都計算出來,再進行判斷。
短路或執行(||) :當運算子號的左邊的關係運算結果是true時,不在進行右邊的關係就是那,直接的結果的結果就是true
非運算:!
4.static 靜態變數 靜態方法,
5.jdk8的lambda語法的
主要是為了區別,匿名內部類的問題,
這個是舉例了,簡單的例子。
new Runnable(){ @Override public void run() { System.out.println("run方法的實現方法"); } }.run(); Runnable r=()->{ System.out.println("run方法的實現方法"); }; r.run();
6.
// 大小寫轉換:ctrl+shift+u //ctrl+alt+u---顯示資料結構
7. java jdk8的新特性;
lambda表示式:
一:foreach迴圈:
Stream<People> stream = people.stream(); stream.forEach(people1 -> System.out.println(people1.toString()));
二:過濾器:filter的使用
stream.filter(people1 -> people1.getGender().equals(People.Sex.FEMALE)) .forEach(people2 -> System.out.println("----"+people2.toString()));
三:doublestream;