比較運算子
== != > >= < <= instanceof
注意:比較運算子的結果都是boolean型,結果只有true或false
而instanceof用於檢查是否是類的物件
例如 「hello」 instanceof string 結果是true
邏輯運算子
& ! | ^ && ||
邏輯運算子用於連線兩個boolean型別的表示式
&:and(與)
只要兩邊有乙個為假時,結果為假
僅當兩邊都為真時,結果為真
|:or(或)
只要兩邊有乙個為真時,結果為真
僅當兩邊都為假時,結果為假
^:or(異或)
當兩邊相同時,結果為假 如:true ^ true =false false ^ false =false
當兩邊不同時,結果為真如:flase ^ true =truetrue ^ false =true
!:not(非)
非假為真,非真為假
&&:and(短路與)
運算結果與 & 相同
運算過程不同:
& 無論兩邊結果如何,兩邊表示式均參加運算
&& 當左邊的結果為假時,右邊的表示式不參加運算,即跳過(短路)
||:or(短路或)
運算結果與 | 相同
運算過程不同:
| 無論兩邊結果如何,兩邊表示式均參加運算
|| 當左邊的結果為真時,右邊的表示式不參加運算,即跳過(短路)
位運算子
& | ^ ~ >>> >> <<
位運算是直接對二進位制進行運算
注意:位運算中0為假,1為真。按位對齊運算。
&:與運算
如 6 & 3 = 2
實際過程為
0000-0000 0000-0000 0000-0000 0000-0110
& 0000-0000 0000-0000 0000-0000 0000-0011
= 0000-0000 0000-0000 0000-0000 0000-0010
= 2為了方便書寫,可寫成
0110
&0011
=0010=2
|:或運算
特點:凡是有效位(1是有效位),全保留
如 6 | 3 = 7
0110
| 0011
=0111=7
^:異或運算
特點:乙個數異或同乙個數兩次,結果還是這個數。可用於加密解密。
如 6 ^ 3 =5
0110
^ 0011
=0101 =5
0101
^0011
=0110 =6
~:反碼
即取反再加一
~6 = -7 即-7+1=-6
原碼0000-0000 0000-0000 0000-0000 0000-0110
取反1111-1111 1111-1111 1111-1111 1111-1001
加一1111-1111 1111-1111 1111-1111 1111-1010
<<:左移
相當於乘以2的倍數
如 3<<2= 意為3左移2位
0000-0000 0000-0000 0000-0000 0000-0011
移位0000-0000 0000-0000 0000-0000 0000-1100 =3*2^2=12
即整體向左移位超出的捨去,低位缺位的補0
例:最有效率的計算2*8
2*8=2<<3=16
即位運算最有效率
>>:右移
相當於除以2的倍數
與左移同理,整體右移,超出的位捨去,高位缺位的補原來高位的值,即保證符號位存在
>>>:無符號右移
資料進行右移時,無論原高位是什麼值,高位空位均補0
注意:移n位,就是對乘以或除以2的n次冪
補充例:交換變數a,b的值
方法一:
定義第三方變數c,開發時首選,可讀性強
int c;
c=a;
a=b;
b=c;
方法二:
注意當兩個數過大時,超出int範圍,會發生強制轉換,造成資料丟失
a=a+b;
b=a-b;
a=a-b;
方法三:
進行位運算,可讀性差,往往用於面試
a=a^b;
b=a^b;
a=a^b;
原理:乙個數異或同乙個數兩次,結果還是這個數。 瘋狂java學習筆記二
1.許可權修飾符 public 任何地方 protected 父子類,同包類 預設 不寫 同包類 private 只能本類 2.static 靜態 變成乙份,屬於類,靜態方法不能訪問非靜態變數 類初始化 例項初始化 3.final 不可變 用在類上不可繼承,方法上不可重寫,變數不可被改變 常量4.c...
java基礎 String學習筆記二
string學習筆記 stringbuffer stringbuilder integer 一 stringbuffer和stringbuilder 公升級三個因素 提高效率 簡化書寫 提高安全性 public class stringbufferdemo public static void me...
java多執行緒學習筆記(二)
8 執行緒的狀態 初始狀態 使用new關鍵字建立乙個執行緒,則執行緒就處理初始狀態。就緒狀態 建立執行緒後,需要我們手動呼叫start方法,來開啟執行緒,start方法會新建乙個執行緒並讓這個執行緒執行run方法。有的同學可能不理解,為什麼不直接呼叫run方法,請記住呼叫run來開啟新執行緒,它只會...