邏輯運算子
和C語言類似都為 與 或 非,
但Java中有長路和短路
長路與 和 短路與
長路:&
短路:&&
無論長路與還是短路與
兩邊的運算單元都是布林值
都為真時,才為真
任意為假,就為假
區別
長路與 兩側,都會被運算
短路與 只要第一個是false,第二個就不進行運算了
長路或 和 短路或
長路:|
短路:||
無論長路或還是短路或
兩邊的運算單元都是布林值
都為假時,才為假
任意為真,就為真
區別
長路或 兩側都會被運算
短路或 只要第一個是true的,第二個就不進行運算了
取反 !
取反 符號:!
真變為假
假變為真
都是布林值,輸出為true或者false
異或 ^
不同,回傳真
相同,回傳假
代碼示例:
public class HelloWorld {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println(a^b); //不同回傳真
System.out.println(a^!b); //相同回傳假
}
}
位操作
這里的內容對于我們學物聯網的是很重要的,在之前的C語言學習中也曾提到過位運算差別不大,指的這個差別是人為在紙上進行操作運算,但是代碼不一樣
首先就得參考這個方法 Integer.toBinaryString()
其作用就是它的中文意思 一個整數的二進制表達
代碼示例:
public class HelloWorld {
public static void main(String[] args) {
int i = 5;
String b = (Integer.toBinaryString(i)); // 5的二進制的表達101
System.out.println(i+" 的二進制表達是: "+b);
}
}
操作進行:
不管是位或還是位與操作記住代碼格式就行,掌握計算原理就可以在紙上進行運算,
public class HelloWorld {
public static void main(String[] args) {
int i =5;
int j = 6;
System.out.println(Integer.toBinaryString(i)); //5的二進制是101
System.out.println(Integer.toBinaryString(j)); //6的二進制是110
System.out.println(i|j); //所以 5|6 對每一位進行或運算,得到 111->7
}
}
至于異或和取非的操作也是按本來運算子的定義來的
1、
左移:根據一個整數的二進制表達,將其每一位都向左移動,最右邊一位補0
右移:根據一個整數的二進制表達,將其每一位都向右移動
2、
帶符號右移 >>
對于正數, 帶符號右移 >> 會把所有的位右移,并在最前面補0
對于負數, 帶符號右移 >> 會把所有的位右移,并在最前面補1
無符號右移>>>
如果是一個負數,那么對應的二進制的第一位是1
無符號右移>>>會把第一位的1也向右移動,導致移動后,第一位變成0
這樣就會使得負數在無符號右移后,得到一個正數
簡單的說:
帶符號右移 >> 移動后正的還是正的,負的還是負的,符號不變
無符號右移>>>移動后,變正的了
對于賦值運算子
記住:賦值操作的操作順序是從右到左
int i = 5+5;
賦值操作
=
+=
-=
*=
/=
%=
&=
|=
^=
<<=
…
三元運算子
和C語言中的條件陳述句的另一種形式類似:
運算式?值1:值2
如果運算式為真 回傳值1
如果運算式為假 回傳值2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291562.html
標籤:其他
