Java 針對操控變量提供了一組豐富的運算符。我們可以將所有的 Java 運算符分為如下幾組:
算術(shù)運算符在數(shù)學表達中的使用和它們在代數(shù)中的使用是相同的。下面的表格列舉了算數(shù)運算符:
假設(shè)整體變量 A 有 10 個,變量 B 有 20 個,那么:
運算符 | 描述 | 例子 |
---|---|---|
+ | 加法 – 在運算符的另一端增加 | A+B 為 30 |
- | 減法 – 將右側(cè)的操作數(shù)從左側(cè)的操作數(shù)中減去 | A - B 為-10 |
* | 乘法 – 將運算符兩端的值相乘 | A * B 為200 |
/ | 除法 – 用右側(cè)操作數(shù)除左側(cè)操作數(shù) | B / A 為2 |
% | 系數(shù) - 用右側(cè)操作數(shù)除左側(cè)操作數(shù)并返回馀數(shù) | B % A 為0 |
++ | 增量 – 給操作數(shù)的值增加1 | B++ 為21 |
-- | 減量 – 給操作數(shù)的值減去1 | B—為19 |
以下是 Java 語言可支持的關(guān)系運算符。
假設(shè)變量 A 有 10,變量 B 有 20,那么:
運算符 | 描述 | 例子 |
---|---|---|
== | 檢查雙方操作數(shù)的值是否相等,如果相等那么條件為真 | (A == B) 不為真。 |
!= | 檢查雙方操作數(shù)的值是否相等,如果不相等那么條件為真 | (A != B) 為真。 |
> | 檢查左側(cè)的操作數(shù)是否大于右側(cè)的操作數(shù),如果大于那么條件為真 | (A > B) 不為真。 |
< | 檢查左側(cè)的操作數(shù)是否小于右側(cè)的操作數(shù),如果小于那么條件為真 | (A < B) 為真。 |
>= | 檢查左側(cè)的操作數(shù)是夠大于等于右側(cè)的操作數(shù),如果是那么條件為真 | (A >= B) 不為真。 |
<= | 檢查左側(cè)的操作數(shù)是否小于等于右側(cè)的操作數(shù),如果是那么條件為真 | (A <= B) 為真。 |
Java 定義了幾種運算符,這類運算符可被運用于整數(shù)型式,long, int,short,字符型和字節(jié)型。
位運算符作用于二進制系統(tǒng)間傳輸標準,并執(zhí)行按位操作。假設(shè)如果 a 等于 60;b 等于 13;現(xiàn)在在二進制型式下它們就如下所示:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
以下表格列舉了位運算符:
假設(shè)整數(shù)變量 A 有 60 個,B 有 13 個那么:
運算符 | 描述 | 例子 |
---|---|---|
& | 二進制AND運算符在結(jié)果上復(fù)制一位如果在雙方操作數(shù)同時存在 | (A & B) 為12,即 0000 1100 |
| | 二進制OR運算符在結(jié)果上復(fù)制一位如果在任何一個操作數(shù)上存在 | (A | B) 為61,即0011 1101 |
^ | 二進制XOR 運算符復(fù)制位,如果它是設(shè)置在一個操作數(shù)上而不是兩個。 | (A ^ B) 為49, 即0011 0001 |
~ | 二進制補充運算符是一元的,b并有“翻轉(zhuǎn)”位的影響 | (~A ) 為 -61,由于是帶符號的二進制數(shù),那2的補位形式為1100 0011 |
<< | 二進制左移運算符。左側(cè)操作數(shù)的值根據(jù)右側(cè)操作數(shù)指定的位的數(shù)量移至左側(cè)。 | A << 2 為240 ,即1111 0000 |
>> | 二進制右移運算符。左側(cè)操作數(shù)的值根據(jù)右側(cè)操作數(shù)指定的位的數(shù)量移至右側(cè)。 | A >> 2 為 15即1111 |
>>> | 右移補零運算符。左側(cè)操作數(shù)的值根據(jù)右側(cè)操作數(shù)指定的位的數(shù)量移至右,并且轉(zhuǎn)移的值用零補滿。 | A >>>2 為15 ,即0000 1111 |
下表格列舉了邏輯運算符:
假設(shè)布爾數(shù)學體系變量 A 為真,B 為假,那么:
運算符 | 描述 | 例子 |
---|---|---|
&& | 稱為邏輯與運算符。如果雙方操作數(shù)都不為零,那么條件為真。 | (A && B) 為真. |
|| | 稱為邏輯或運算符. 如果雙方操作數(shù)其中的任何一個都不為零,那么條件為真。 | (A || B) 為真. |
! | 稱為邏輯非運算符. 用作翻轉(zhuǎn)操作數(shù)的邏輯狀態(tài)。如果一個條件為真,那么邏輯非運算符為假。 | !(A && B) 為真. |
以下是由 Java 語言所支持的賦值運算符:
運算符 | 描述 | 例子 | |
---|---|---|---|
= | 簡單及運算符, 將右側(cè)操作數(shù)的值賦給左側(cè)操作數(shù) | C = A + B 會將 A + B 的值賦給 C | |
+= | 增加及賦值運算符, 它將右側(cè)的操作數(shù)增加到左側(cè)的操作數(shù)并且結(jié)果賦給左側(cè)操作數(shù) | C += A 同等于 C = C + A | |
-= | 減去及賦值運算符,它將右側(cè)操作數(shù)從左側(cè)操作數(shù)中減去并將結(jié)果賦給左側(cè)操作數(shù) | C -= A 同等于C = C - A | |
*= | 乘以及賦值運算符,它將右側(cè)操作數(shù)與左側(cè)相乘并將結(jié)果賦給左側(cè)操作數(shù) | C = A 同等于 C = C A | |
/= | 除以及賦值運算符,它將右側(cè)操作數(shù)除左側(cè)操作數(shù)并將結(jié)果賦給左側(cè)操作數(shù) | C /= A 同等于 C = C / A | |
%= | 系數(shù)及賦值運算符 需要系數(shù)運用兩個操作數(shù)并且將結(jié)果賦給左側(cè)操作數(shù) | C %= A is 同等于 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 語言所支持的一些其他的運算符:
條件運算符同樣也被稱作為三元運算符。這種運算符由三個操作數(shù)組成,被用作評估布爾數(shù)學體系表達。這種運算符的目的是來決定哪些值應(yīng)被賦予到變量上。這個運算符被寫作如下:
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 );
}
}
這樣就會有如下結(jié)果:
Value of b is : 30
Value of b is : 20
這種操作符只用于對象引用變量。這種操作符檢查對象是否是獨特類型(類型或接口類型)。Instanceof 運算符寫為:
( Object reference variable ) instanceof (class/interface type)
如果在運算符左側(cè)的由變量所指代的對象為右側(cè)的類型或接口類型通過 IS-A 檢查,那么結(jié)果為真。以下是示例:
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 );
}
}
這就會產(chǎn)出如下結(jié)果:
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 );
}
}
這樣將會產(chǎn)生以下的結(jié)果:
true
運算符優(yōu)先級決定一個表達式里術(shù)語的分組。它影響著一個表達式如何求值。一定的運算符比其他運算符擁有更高的優(yōu)先級;例如:乘法運算符比加法運算符有更高的優(yōu)先級:
例如,x=7+3 2; 這里x 被賦值為13,不是20,是因為運算符 比運算符+由更高的優(yōu)先級, 所以它首先運算乘法 3*2, 然后再加7。
這里,有著最高優(yōu)先級的運算符在這個表格的最高一層,最低優(yōu)先權(quán)的則出現(xiàn)在最底部。在一個表達式中,越高等級的優(yōu)先權(quán)的運算符會最先被求值。
類 | 運算符 | 關(guān)聯(lián)性 |
---|---|---|
后綴 | () [] . (dot operator) | 從左到右 |
一元 | ++ - - ! ~ | 從右到左 |
乘法的 | * / % | 從左到右 |
加法的 | + - | 從左到右 |
移位 | >> >>> << | 從左到右 |
關(guān)系的 | > >= < <= | 從左到右 |
相等 | == != | 從左到右 |
位與 | & | 從左到右 |
位異或 | ^ | 從左到右 |
位或 | | | 從左到右 |
邏輯與 | && | 從左到右 |
邏輯或 | || | 從左到右 |
有條件的 | ?: | 從右到左 |
賦值 | = += -= *= /= %= >>= <<= &= ^== | 從右到左 |
逗號 | , | 從左到右 |
接下來的一章將會解釋 Java 程序設(shè)計中的循環(huán)控制。該章節(jié)將會描述不同種類的循環(huán)以及這些循環(huán)如何運用到 Java 程序發(fā)展和以什么樣的目的來使用它們。