Java基本運算符
Java提供了一組豐富的操作符來操作變量。 我們可以將所有Java運算符劃分爲以下幾個分類 -
- 算術運算符
- 關係運算符
- 按位運算符
- 邏輯運算符
- 賦值運算符
- 其他運算符
1. 算術運算符
算術運算符在數學表達式中的使用方式與在代數中使用的方式相同。下表列出了算術運算符的使用示例 -
假設整數類型變量A
的值爲:10
,變量B
的值爲:20
,則 -
運算符
描述
示例
+
加法運算符,第一個操作數加上第二個數操作數
A + B
結果爲:30
-
減法運算符,從第一個操作數減去第二個操作數
A - B
結果爲:-10
*
兩個操作數相乘
A * B
結果爲:200
/
左操作數除以右操作數返回模值
B / A
結果爲:2
%
左操作數除以右操作數返回餘數
B / A
結果爲:0
++
將操作數的值增加1
A++
,則A
的值爲:11
--
將操作數的值減1
A--
,則A
的值爲:9
算術運算符示例代碼
2. 關係運算符
Java語言支持以下關係運算符。假設變量A
的值是10
,變量B
的值是20
,則 -
運算符
描述
示例
==
等於運算符,檢查兩個操作數的值是否相等,如果相等,則條件變爲真。
A==B
結果爲假。
!=
不等於運算符,檢查兩個操作數的值是否不相等,如果不相等,則條件變爲真。
A!=B
結果爲真。
>
大於運算符,檢查左操作數的值是否大於右操作數的值,如果大於,則條件變爲真。
A>B
結果爲假。
<
小於運算符,檢查左操作數的值是否小於右操作數的值,如果小於,則條件變爲真。
A<B
結果爲真。
>=
大於或等於運算符,檢查左操作數的值是否大於等於右操作數的值,如果大於或等於,則條件變爲真。
A>=B
結果爲假。
<=
小於或等於運算符,檢查左操作數的值是否小於或等於右操作數的值,如果小於或等於,則條件變爲真。
A<=B
結果爲真。
關係運算符示例代碼
3. 按位運算符
Java定義了幾個按位運算符,可以應用於整數類型, 如:long
,int
,short
,char
和byte
。按位運算符處理位並執行逐位運算。 假設a = 60
且b = 13
; 採用二進制格式,它們將如下 -
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
下面的表中列出了按位運算符,假設整數變量A=60
,變量B=13
,那麼 -
運算符
描述
示例
&
二進制AND運算符,如果存在於兩個操作數中,則它會將結果複製到結果中。
A & B
的結果爲:12
,也就是:0000 1100
Ι
二進制OR運算符,如果存在於任一操作數中,則複製一位。
A Ι B 的結果爲:61
,也就是:0011 1101
^
二進制異或運算符,如果在一個操作數中設置但不在兩個操作數中設置,則複製該位。
A ^ B
的結果爲:49
,也就是:0011 0001
~
二元一元補充運算符是一元的,具有「翻轉」位的效果。
~A
的結果爲:-61
,也就是:1100 0011
<<
二進制左移運算符,左操作數值向左移動右操作數指定的位數。
A << 2
的結果爲:240
,也就是:1111 0000
>>
二進制右移運算符,左操作數值向右移動右操作數指定的位數。
A >> 2
的結果爲:15
,也就是:1111
>>>
右移零填充運算符。 左操作數值向右移動右操作數指定的位數,移位值用零填充。
A >>>2
的結果爲:15
,也就是:0000 1111
按位運算符示例代碼
4. 邏輯運算符
下表列出了邏輯運算符 -
假設布爾變量A
的值爲:true
,變量B
的值爲:false
,則 -
運算符
描述
示例
&&
邏輯AND運算符。 如果兩個操作數都不爲零,則條件成立。
(A && B)
結果爲:false
ΙΙ
邏輯OR運算符。 如果兩個操作數中的任何一個非零,則條件變爲真。
(A ΙΙ B)結果爲:true
!
邏輯非運算符。用於反轉其操作數的邏輯狀態。 如果條件爲真,則口邏輯NOT運算符將爲false
。
!(A && B)
結果爲:true
邏輯運算符示例代碼
5. 賦值運算符
以下是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相同
賦值運算符示例代碼
6. 其它運算符
Java語言支持的其他運算符很少。
6.1. 條件運算符(?:)
條件運算符也稱爲三元運算符。 此運算符由三個操作數組成,用於計算布爾表達式。 運算符的目標是確定應將哪個值賦給變量。 運算符寫成 -
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 : 30
Value of b is : 20
6.2. instanceof運算符
此運算符僅用於對象引用變量。 運算符檢查對象是否屬於特定類型(類類型或接口類型)。 instanceof
運算符寫成 -
( Object reference variable ) instanceof (class/interface type)
如果操作符左側的變量引用的對象是右側的類/接口類型,則結果爲真。 以下是一個例子 -
public class Test {
public static void main(String args[]) {
String name = "Kobe";
// 當 name 的類型是 String 時,則返回爲:true
boolean result = name instanceof String;
System.out.println( result );
}
}
執行上面示例代碼,得到以下結果:
true
如果要比較的對象與右側類型兼容,則此運算符仍將返回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