標籤:git 優先權 strong master 而不是 das 變數 左移 求值
以下內容引用自http://wiki.jikexueyuan.com/project/java/basic-operators.html:
Java針對操控變數提供了一組豐富的運算子。可以將所有的Java運算子分為如下幾組:
- 算術運算子
- 關係運算子
- 位元運算符
- 邏輯運算子
- 賦值運算子
- 其他運算子
一、算術運算子
算術運算子在數學表達中的使用和它們在代數中的使用是相同的。下面的表格列舉了算數運算子:
假設整體變數A有10個,變數B有20個,那麼:
樣本:
| 運算子 |
描述 |
例子 |
| + |
加法–在運算子的另一端增加 |
A+B為30 |
| - |
減法–將右側的運算元從左側的運算元中減去 |
A-B為-10 |
| * |
乘法–將運算子兩端的值相乘 |
A*B為200 |
| / |
除法–用右側運算元除左側運算元 |
B/A為2 |
| % |
餘數-用右側運算元除左側運算元並返回餘數 |
B%A為0 |
| ++ |
增量–給運算元的值增加1 |
B++為21 |
| -- |
減量–給運算元的值減去1 |
B--為19 |
二、關係運算子
以下是Java語言可支援的關係運算子。
假設變數A有10,變數B有 20,那麼:
樣本:
| 運算子 |
描述 |
例子 |
| == |
檢查雙方運算元的值是否相等,如果相等那麼條件為真 |
(A==B) 不為真。 |
| != |
檢查雙方運算元的值是否相等,如果不相等那麼條件為真 |
(A!= B) 為真。 |
| > |
檢查左側的運算元是否大於右側的運算元,如果大於那麼條件為真 |
(A>B) 不為真。 |
| < |
檢查左側的運算元是否小於右側的運算元,如果小於那麼條件為真 |
(A<B) 為真。 |
| >= |
檢查左側的運算元是夠大於等於右側的運算元,如果是那麼條件為真 |
(A>=B) 不為真。 |
| <= |
檢查左側的運算元是否小於等於右側的運算元,如果是那麼條件為真 |
(A<=B) 為真。 |
三、位元運算符
Java定義了幾種運算子,這類運算子可被運用於整數型式,long,int,short,char和byte。
位元運算符作用於二進位系統間傳輸通訊協定,並執行按位操作。假設如果a等於60;b等於13;現在在二進位型式下它們就如下所示:
a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011
以下表格列舉了位元運算符:
假設整數變數A有60個,B有13個那麼:
樣本:
| 運算子 |
描述 |
例子 |
| & |
二進位AND運算子在結果上複製一位如果在雙方運算元同時存在 |
(A&B)為12,即0000 1100 |
| | |
二進位OR運算子在結果上複製一位如果在任何一個運算元上存在 |
(A|B) 為61,即0011 1101 |
| ^ |
二進位XOR運算子複製位,如果它是設定在一個運算元上而不是兩個。 |
(A^B) 為49, 即0011 0001 |
| ~ |
二進位補充運算子是一元的,b並有“翻轉”位的影響 |
(~A )為-61,由於是帶符號的位元,那2的補位形式為1100 0011 |
| << |
二進位左移運算子。左側運算元的值根據右側運算元指定的位的數量移至左側。 |
A<<2為240 ,即1111 0000 |
| >> |
二進位右移運算子。左側運算元的值根據右側運算元指定的位的數量移至右側。 |
A>>2 為15,即1111 |
| >>> |
右移補零運算子。左側運算元的值根據右側運算元指定的位的數量移至右,並且轉移的值用零補滿。 |
A>>>2為15,即0000 1111 |
四、邏輯運算子
下表格列舉了邏輯運算子:
假設布爾數學體系變數A為真,B為假,那麼:
樣本:
| 運算子 |
描述 |
例子 |
| && |
稱為邏輯與運算子。如果雙方運算元都不為零,那麼條件為真。 |
(A&&B)為假. |
| || |
稱為邏輯或運算子。如果雙方運算元其中的任何一個都不為零,那麼條件為真。 |
(A||B)為真. |
| ! |
稱為邏輯非運算子。用作翻轉運算元的邏輯狀態。如果一個條件為真,那麼邏輯非運算子為假。 |
!(A&&B)為真. |
五、賦值運算子
以下是由Java語言所支援的賦值運算子:
樣本:
| 運算子 |
描述 |
例子 |
| = |
簡單及運算子,將右側運算元的值賦給左側運算元 |
C=A+B會將A+B的值賦給C |
| += |
增加及賦值運算子,它將右側的運算元增加到左側的運算元並且結果賦給左側運算元 |
C+=A同等於C=C+A |
| -= |
減去及賦值運算子,它將右側運算元從左側運算元中減去並將結果賦給左側運算元 |
C-=A同等於C=C-A |
| *= |
乘以及賦值運算子,它將右側運算元與左側相乘並將結果賦給左側運算元 |
C*=A同等於C=C*A |
| /= |
除以及賦值運算子,它將右側運算元除左側運算元並將結果賦給左側運算元 |
C/=A同等於C=C/A |
| %= |
係數及賦值運算子 需要係數運用兩個運算元並且將結果賦給左側運算元 |
C%=A同等於C=C%A |
| <<= |
左移和賦值運算子 |
C<<=2同等於C=C<<2 |
| >>= |
右移和賦值運算子 |
C>>=2同等於C=C>>2 |
| &= |
按位和賦值運算子 |
C&=2同等於C=C&2 |
| ^= |
按位異或及賦值運算子 |
C^=2同等於C=C^2 |
| |= |
按位可兼或及賦值運算子 |
C|=2同等於C=C|2 |
六、其它運算子
以下是由Java語言所支援的一些其他的運算子:
條件運算子/三目運算子(?:)
條件運算子同樣也被稱作為三元運算子。這種運算子由三個運算元組成,被用作評估布爾數學體系表達。這種運算子的目的是來決定哪些值應被賦予到變數上。這個運算子被寫作如下:
variable x = (expression) ? value if true : value if false
以下是樣本:
public class Test { public static void main(String args[]){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); }}//這樣就會有如下結果:Value of b is : 30Value of b is : 20
Instanceof符
這種操作符只用於對象引用變數。這種操作符檢查對象是否是獨特類型(類型或介面類型)。Instanceof運算子寫為:
( Object reference variable ) instanceof (class/interface type)
如果在運算子左側的由變數所指代的對象為右側的類型或介面類型通過IS-A檢查,那麼結果為真。以下是樣本:
public class Test { public static void main(String args[]){ String name = "James"; // following will return true since name is type of String boolean result = name instanceof String; System.out.println( result ); }}//這就會產出如下結果:true
如果被比較的對象是與右邊類型相容的賦值,這種運算子仍會返回到真。以下是另一個例子:
class Vehicle {}public class Car extends Vehicle { public static void main(String args[]){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result ); }}//這樣將會產生以下的結果:true
七、Java運算子的優先順序
運算子優先順序決定一個運算式裡術語的分組。它影響著一個運算式如何求值。一定的運算子比其他運算子擁有更高的優先順序;例如:乘法運算子比加法運算子有更高的優先順序:
例如,x=7+3*2; 這裡x被賦值為13,不是20,是因為運算子*比運算子+由更高的優先順序, 所以它首先運算乘法3*2, 然後再加7。
這裡,有著最高優先順序的運算子在這個表格的最高一層,最低優先權的則出現在最底部。在一個運算式中,越高等級的優先權的運算子會最先被求值。
| 類 |
運算子 |
關聯性 |
| 尾碼 |
>() [] . (dot operator) |
從左至右 |
| 一元 |
++ - - ! ~ |
從右至左 |
| 乘法的 |
* / % |
從左至右 |
| 加法的 |
+ - |
從左至右 |
| 移位 |
>> >>> << |
從左至右 |
| 關係的 |
> >= < <= |
從左至右 |
| 相等 |
== != |
從左至右 |
| 位與 |
& |
從左至右 |
| 位異或 |
^ |
從左至右 |
| 位或 |
| |
從左至右 |
| 邏輯與 |
&& |
從左至右 |
| 邏輯或 |
|| |
從左至右 |
| 有條件的 |
?: |
從右至左 |
| 賦值 |
= += -= *= /= %= >>= <<= &= ^== |
從右至左 |
測試工程:https://github.com/easonjim/5_java_example/tree/master/javabasicstest/test4
Java的基本運算子