1. 賦值
- 基本類型的複製中基本類型存儲了實際的數值,而並非指向一個對象的引用,所以賦值時候是直接將一個地方的內容複製到另一個地方,例如a=b,b的內容就複製給了a,若修改a,則不會影響b;但是在爲對象賦值時候,真正操作的是對對象的引用,對象賦值是對引用進行復制
- Random類裏面有個參數 ,種子,用於隨機數生成器的初始化值,隨機數生成器對於特定的 種子值總是產生相同的隨機數序列,爲空就會將當前時間作爲種子。nextInt()的參數設置的是隨機數的上限,下限爲0,生成 0(包含)到n(不包含)的整數
- 自動遞增和遞減:前綴遞增會先執行運算,再生成值;後綴遞增會先生成值,再執行運算
a = 2
++a 3
a++ 2
- 關係操作符:
a. ==比較的是對象的地址 ,equals方法比較的是對象的實際內容。但是equals()的默認行爲是比較引用,所以除非自己覆蓋equals方法。但是這個不適用於基本類型,基本類型直接使用==或!=即可。 - 指數計數法:
a. 1.39e-43代表:1.39x10-34 - 按位操作符:
a. 按位與(&)、按位或(|)、按位異或(^)(位數相同爲0,不同爲1)、非(~) - 移位操作符:
a.Column 1 Column 2 Column 3 左移位操作符 << 將操作符左邊的操作數向左移動右側指定的位數,低位補0 有符號右移位操作符 >> 將操作符左邊的操作數向右移動右側指定的位數,符號爲正,則高位插0 無符號右移位操作符 >>> 無論正負,都在高位插0
對char、byte、short類型的數值移位處理,移位前會被轉換成int類型,只有右側的5個低位纔會用到。若對long類型數值進行處理,最後結果也是long,只會用到數值右端的低6位。
c.
負數移位操作舉例:
-3 << 2
00000000 00000000 00000000 00000011 +3在計算機中表示
11111111 11111111 11111111 11111100 反碼
11111111 11111111 11111111 11111101 在反碼基礎上加1,結果即-3
11111111 11111111 11111111 1111110100 左移2位,補0,結果爲負數,就是補碼了,求原碼(去掉前面多出兩位)
10000000 00000000 00000000 00001011 反碼
10000000 00000000 00000000 00001100 在反碼基礎上加1,即結果-12
-6 >> 2
00000000 00000000 00000000 00000110 +6在計算機中表示方法
11111111 11111111 11111111 11111001 反碼
11111111 11111111 11111111 11111010 -6在計算機中的表示
1111111111 11111111 11111111 11111010 右移兩位,負數補1,結果爲負數
1000000000 00000000 00000000 000001 反碼
1000000000 00000000 00000000 000010 結果爲-2
-6 >>> 2
00000000 00000000 00000000 00000110 +6在計算機中表示方法
11111111 11111111 11111111 11111001 反碼
11111111 11111111 11111111 11111010 -6在計算機中的表示
0011111111 11111111 11111111 11111010 右移兩位,補充0,結果爲1073741822
-
類型轉換操作符
a. float或double強轉爲int時,採取舍,如果想人,用Math.round() -
負數知識拓展:
a. 無符號數和有符號數的範圍區別:無符號數中,所有的位都用於直接表示該值的大小;有符號數中最高位用於表示正負 b. 無論是字符類型,或者是整數類型,也無論這個整數是幾個字節。它都用全1來表示 -1。比如一個字節的數值中:1111 1111表示-1。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。當減到只剩最高位用於表示符號的1以外,其它低位全爲0時,就是最小的負值了,在一字節中,最小的負值是1000 0000,也就是-128。