提示:如果你有足夠的精力,請記住運算子的優先順序!
1. 算術運算子
+ - * / %(求餘/求模運算子) ++ --
++ -- 稍微有點麻煩,有個好辦法:自己寫個Demo測試一下,就可以搞定!
2. 關係運算子
> < == != >= <=
3. 邏輯運算子
& | ^ ! && ||
<1> & | ^ 既可以對邏輯表達時進行操作,也可以對一般資料類型進行操作
int a = 1;//0x0001<br /> int b = 2;//0x0002<br /> System.out.println("對一般資料類型進行操作");<br /> System.out.println(a&b);//0,按位求餘<br /> System.out.println(a^b);//3,按位異或<br /> System.out.println(a|b);//3,按位求或</p><p> System.out.println("對邏輯表達時進行操作");<br /> System.out.println(a == 1 & b == 2);//true<br /> System.out.println(a == 1 | b == 2);//true<br /> /*兩者不一致時才為真*/<br /> System.out.println(a == 1 ^ b == 2);//true+true = false<br /> System.out.println(a == 12 ^ b == 2);//false+true = true<br /> //false+true = true<br /> System.out.println(a == 1 ^ b == 22);<br /> //true+true = false<br /> System.out.println(a == 12 ^ b == 22);<br />
<2> && || ! 只可以對邏輯表達時進行操作,不可以對一般資料類型進行操作
//均會報錯<br /> System.out.println(a&&b);<br /> System.out.println(a||b);<br /> System.out.println(!a);<br />
<3> 區別
&:普通與 &&:短路與|:普通或 ||:短路或
@1. 當在(a && b)條件下,當a為false時,不用再判斷b了,運算式已經為false;
@2. 當在(a || b)條件下,當a為true時,不用再判斷b了,運算式已經為true;
@3. 而 & 和 | 則需要兩邊都進行判斷 才行 !
4. 位元運算符
& | ^ ~ >> << >>>
& | ^ ~ 按位取與、取或、異或、取反
>> 位右移,高位是1,右移n位就在左邊補n個1;高位是0,右移n位就在左邊補n個0
>>> 無符號位右移,不管高位是1還是0,均在左邊補0
<< 位左移,右邊補0
5. 賦值運算子
=
6. 擴充運算子,即複合運算子
+= -= *= /= %= 等等
int a = 7;<br /> //報錯:可能損失精度,因為int遇見float會先自動轉換為float再與<br /> //2.6相運算,但是計算結果是float不能自動轉換為int故報錯<br /> a = a + 2.6<br /> //使用複合運算子,就相當於強制轉換<br /> a += 2.6; <=> a = (int)(a + 2.6); = 9//強制轉化會損失精度 --> 省去小數點<br /> 所以,a += 2.6; //不與 a = a + 2.6等效<br />
7. 字串串連符
+
在使用System.out.println語句列印時,會預設調用toString()方法,所以只要字串串連符+兩邊的運算元有一個是字串,
系統就會自動的將另一個運算元轉換為string,然後再列印輸出。
int a = 1;<br /> int b = 2;<br /> System.out.println("a+b= " + a + b);//a+b= 12<br /> System.out.println("a+b= " + (a + b));//a+b= 3,括弧的優先<br />//級最大,所以先計算a + b的值然後再將其轉換為string輸出。<br />以下類推。</p><p> System.out.println("------------------------------");</p><p> int i = 12;<br /> char ch = 24;<br /> System.out.println("i+ch = " + i + ch);//i+ch = 12一個字<br /> //符(24對應的字元)<br /> System.out.println("i+ch = " + (i + ch));//i+ch = 36