Java簡明教程系列(8) - 基本運算符

前言

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。

運算符 描述 舉例
== (等於) 判斷兩邊是否相等,如果相等返回true,否則返回false。 (A == B) = false.
!= (不等於) 判斷兩邊是否不相等,如果相等返回false,否則返回true。 (A != B) = true
> (大於) 判斷左邊是否大於右邊,如果是則返回true,否則返回false。 (A > B) = false
< (小於) 判斷左邊是否小於右邊,如果是則返回true,否則返回false。 (A < B) = true
>= (大於等於) 判斷左邊是否大於或等於右邊,如果是則返回true,否則返回false。 (A >= B) = false
<= (小於等於) 判斷左邊是否小於或等於右邊,如果是則返回true,否則返回false。 (A <= B) = true

按位運算符

Java定義了多種按位運算符,可以用與integer,int,long,short,char和byte數據類型。
按位運算符用於二進制比特位(bit)與比特位之間的計算。假設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
下表中列出了具體的按位運算符說明與計算示例:

運算符 描述 舉例
& (按位與) 二進制與操作符,操作符兩邊都爲1是得到1,否則得到0 (A & B) 得到12,也就是二進制0000 1100
| (按位或) 二進制或操作符,操作符兩邊至少有一邊爲1時得到1,否則得到0 (A | B) 得到61,也就是0011 1101
^ (按位異或) 二進制異或操作符,操作符有且只有一邊爲1時得到1,否則得到0 (A ^ B) 得到49,也就是0011 0001
~ (按位補碼) 二進制補碼運算符是一元的,具有“翻轉”位的作用。 (~A )得到-61也就是1100 0011,二進制補碼形式。
<< (左移) 二進制左移運算符。 左操作數的值向左移動右操作數指定的位數。 A << 2 得到240,也就是二進制1111 0000
>> (右移) 二進制右移運算符。 左操作數的值向右移動右操作數指定的位數。 A >> 2得到15,也就是1111
>>> (0填充右移) 右移零填充運算符。 左操作數的值向右移動右操作數指定的位數,並且移位後的值用零填充。 A >>>2得到15,也就是0000 1111

邏輯運算符

下表中詳細說明了邏輯運算符,其中假設A爲true(真),B爲false(假)。

運算符 描述 舉例
&& (邏輯與) 邏輯與操作符。當操作符兩邊都爲true時,表達式返回爲true,否則爲false。 (A && B) 爲 false
|| (邏輯或) 邏輯或操作符。當操作符兩邊至少有一邊爲true時,表達式返回true,否則返回false。 (A
! (邏輯非) 邏輯非操作符。用於將表達式結果反轉,例如表達式爲true時,使用“非”運算後結果爲false;當表達式爲false時,使用“非”運算後結果爲true。 !(A && B) 爲 true

賦值運算符

下表中詳細列舉了Java中的賦值運算符。

操作符 說明
= 簡單的等號賦值運算符。將等號右邊的值賦給左邊。
+= 將運算符左右兩邊的值相加後得到的值,賦值給運算符左邊的變量
-= 將運算符左右兩邊的值相減後得到的值,賦值給運算符左邊的變量
*= 將運算符左右兩邊的值相乘後得到的值,賦值給運算符左邊的變量
/= 將運算符左右兩邊的值相除後得到的值,賦值給運算符左邊的變量
%= 將運算符左右兩邊的值取模後得到的值,賦值給運算符左邊的變量
<<= 將運算符左邊的值左移右邊的數值對應的位數後,賦值給運算符左邊的變量
>>= 將運算符左邊的數值右移右邊的數值對應的位數後,賦值給運算符左邊的變量
&= 將運算符左邊的值與右邊的值進行按位與操作後,將得到的值賦給左邊的變量
^= 將運算符左邊的值與右邊的值進行按位異或操作後,將得到的值賦給左邊的變量
|= 將運算符左邊的值與右邊的值進行按位或操作後,將得到的值賦給左邊的變量

雜項運算符

除了上文中提及的運算符之外,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 );
   }
}

instanceof操作符

這個操作符僅用於對象的引用變量,用來檢查對象是否是一種特定的類型(類的類型或接口類型)。instanceof的用法如下:

( Object reference variable ) instanceof  (class/interface type)

如果左側的變量是右側的類/接口的變量引用,那麼表達式就返回true。下面是一個使用的示例:

public class Test {

   public static void main(String args[]) {

      String name = "James";
      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

Java運算符的優先級

運算符優先級確定一個表達式中運算的分組和順序,這將影響表達式的計算結果。部分運算符優先級高於其它運算符,例如,乘法運算符的優先級高於加法運算符。
舉個例子,x = 7 + 3 * 2。在這個表達式中,x的計算結果爲13而不是20,這是因爲乘法運算符(*)比加法運算符(+)的優先級更高,所以首先計算3 * 2,然後再將這個計算結果與7相加。
下表中,運算符的優先級爲從上到下依次遞減,也就是第一行的運算符優先級最高,最後一行的運算符優先級最低。在同一個表達式中,運算符的優先級越高,就越先被計算。

類別 運算符 關聯性
後綴 expression++ expression– 從左到右
一元 ++expression –-expression +expression –expression ~ ! 從右到左
乘性 * / % 從左到右
累加 + - 從左到右
移位 << >> >>> 從左到右
關係型 < > <= >= instanceof 從左到右
相等 == != 從左到右
按位與 & 從左到右
按位異或 ^ 從左到右
按位或 | 從左到右
邏輯與 && 從左到右
邏輯或 || 從左到右
條件運算符 ?: 從右到左
賦值運算符 = += -= *= /= %= ^= |= <<= >>= >>>= 從右到左

本篇小結

更多交流,歡迎加羣(584017112):

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章