Java運算符

        Java語言中的表達式是由運算符與操作數組合而成的,所謂的運算符就是用來做運算的符號。
        在Java中的運算符,基本上可分爲算術運算符、關係運算符、邏輯運算符、位運算符、賦值運算符、轉型運算符等。

一、算術運算符
       所謂算術運算符,也就是我們數學中學到的加、減、乘、除等運算。這些操作可以對幾個不同類型的數字進行混合運算,爲了保證操作的精度,系統在運算的過程中會做相應的轉換。
      1、數字精度
       所謂數字精度,也就是系統在做數字之間的算術運算時,爲了盡最大可能地保持計算機的準確性,而自動進行相應的轉換,將不同的數據類型轉變爲精度最高的數據類型。規則如下:
      1)當使用運算符把兩個操作數結合到一起時,在進行運算前兩個操作數會轉化成相同的類型。
      2)兩個操作數中有一個是double類型的,則另一個將轉換成double型。
      3)兩個操作數中有一個是float類型的,則另一個將也轉換成float型。
      4)兩個操作數中有一個是long類型的,則另一個將也轉換成long型。
      5)任何其它類型的操作,兩個操作數都要轉換成int類型。
      2、整數型運算(int型)
       對於int型的相關操作,加、減、乘的結果都是非常容易理解的,重點講一下除(/)的運算。
       兩個整數相除的結果是整數,這一點與數學中是不同的,在Java中,兩個整數相除的結果類似於數學中的求模運算。整除的餘數是用%表示,例如15 / 2 = 7,而不是7.5,15 % 2 = 1。我們用程序驗證一下:

/*兩個整數相除及求餘數*/

public class Divide
{
   public static void main(String[] args)
   {
      int a = 15;
      int b = 2;
      double c = 2;
      System.out.println(a + "/" + b + "=" + (a / b));
      System.out.println(a + "%"+ b + "=" + (a % b));
      System.out.println(a + "/" + c + "=" + (a / c));
      System.out.println(a + "%" + c + "=" + (a % c));
    }
}

輸出結果:
                 15 / 2 = 7
                 15 % 2 = 1
                 15 / 2.0  =  7.5
                 15 % 2.0 = 1.0

        3、自增和自減運算符
        在循環與控制中,我們經常會用到類似於計數器的運算,它們的特徵是每次的操作都是加1或減1。在Java中提供了自增、自減運算符,X++使變量X的當前值每次增加1,而X--是自減運算符,每次操作使當前X的值減1。例如:

/*測試自增、自減操作*/

public class SelfAction
{
   public static void main(String[] args)
   {
     int x = 10;
     int a = x+ x++;
     System.out.println("a =" + a);
     System.out.println("x =" + x);
     int b = x + ++x;
     System.out.println("b =" + b);
     System.out.println("x =" + x);
     int c = x + x--;
     System.out.println("c =" + c);
     System.out.println("x =" + x);
     int d = x + --x;
     System.out.println("d =" + d);
     System.out.println("x =" + x);
   }

輸出結果:
                 a = 20
                 x = 11
                 b = 23
                 x = 12
                 c = 24
                 x = 11
                 d = 21
                 x = 10

二、關係運算符
        Java具有完美的關係運算符。這些關係運算符基本上同數學中的關係運算符是一致的。“>”大於、“<”小於、“>=”大於等於、“<=”小於等於、“==”等於、“!=”不等於。例如:

/*關係運算符測試*/

public class RelationTest
{
   public static void main(String[] args)
   {
     boolean x, y, z;
     int a = 15;
     int b = 2;
     double c =15;
     x = a > b;  //true;
     y = a < b;  //false;
     z = a != b;  //true;
     System.out.println("x =" + x);
     System.out.println("y =" + y);
     System.out.println("z =" + z);
   }
}
輸出結果:
                 x = true
                 y = false
                 z = true

三、邏輯運算符
        在Java語言中有三種邏輯運算符,它們是NOT(非,以符號“!”表示)、AND(與,以符號“&&”表示、)OR(或,以符號“||”表示)。
        1、NOT運算符
         NOT運算符是用來表示相反的意思。
                        NOT邏輯關係值表
                          

A

!A

true

false

false

true


         2、AND運算符
         AND運算符表示“與”的意思,也就是和的意思。
                       AND邏輯關係值表
 

A

B

A&&B

false

false

false

true

false

false

false

true

false

true

true

true


         3、OR運算符
         OR運算符是用來表示“或”就像我們日常生活中理解的一樣,兩者只要有一個爲“真”,結果就爲“真”。
                     OR邏輯關係值表
 

A

B

A||B

false

false

false

true

false

true

false

true

true

true

true

true


/*邏輯運算符測試*/

public class LogicSign
{
   public static void main(String[] args)
   {
     boolean x, y, z, a, b;
     a = 'a' > 'b';
     b = 'R' != 'r';
     x = !a;
     y = a && b;
     z = a || b;
     System.out.println("x =" + x);
     System.out.println("y =" + y);
     System.out.println("z =" + z);
   }
}
輸出結果:
                 x = true
                 y = false
                 z = true

       4、“短路”現象
       在運用邏輯運算符進行相關的操作時,我們會遇到一種很有趣的現象;短路現象。
       對於true && false根據我們的講述,處理的結果已經是false了,也就是說無論後面是結果是“真”還是“假”,整個語句的結果肯定是false了,所以系統就認爲已經沒有必要再進行比較下去了。也就不會再執行了,這種理象就是我們所說的短路現象。

四、位運算符
          所有的數據、信息在計算機中都是以二進制形式存在的。我們可以對整數的二進制位進行相關的操作。這就是按位運算符,它主要包括:位的“與”、位的“或”、位的“非”、位的“異或”。
        1)位的“與”,用符號“&”表示,它屬於二元運算符。 與位運算值表:
 

A

B

A&B

1

1

1

1

0

0

0

1

0

0

0

0


         2)位的“或”用符號“|”表示,它屬於二元運算符。。   或位運算值表:

A

B

A|B

1

1

1

0

1

1

1

0

1

0

0

0


          3)位的“非”,用符號“~”表示,它是一元運算符,只對單個自變量起作用。它的作用是使二進制按位“取反”。 非位運算值表:

A

~A

1

0

0

1


           4)位的“異或”,用符號“^”表示,它屬於二元運算符。異或位運算值表:

A

B

A^B

1

1

0

0

1

1

1

0

1

0

0

0



/*測試位的四種運算*/

public class BitOperation
{
 public static void main(String[] args)
 {
  int a = 15;
  int b = 2;
  int x = a & b;
  int y = a | b;
  int z = a ^ b;
  System.out.println(a + "&" + b + "=" + x);
  System.out.println(a + "|" + b + "=" + y);
  System.out.println(a + "^" + b + "=" + z);
 }
}

輸出結果:
                  15 & 2 = 2
                  15 | 2 = 15
                  15 ^ 2 = 13

五、移位運算符
        移位運算符的面向對象也是二進制的“位”。可以單獨用移位運算符來處理int型數據。它主要包括:左移位運算符(<<)、“有符號”右移位運算符(>>)、“無符號”右移運算符(>>>)
        1)左移位運算符
         左移位運算符,用符號“<<”表示。它是將運算符左邊的對象向左移運動運算符右邊指定的位數(在低位補0)。
        2)“有符號”右移運算符
        “有符號”右移運算符,用符號“>>”表示。它是將運算符左邊的運算對象向右移動運算符右側指定的位數。它使用了“符號擴展”機制,也就是說,如果值爲正,在高位補0,若爲負,則在高位補1。
        3)“無符號”右移運算符
        “無符號”右移運算符,用符號“>>>”表示。它同“有符號”右移運算符的移動規則是一樣的,惟一的區別就是:“無符號”右移運算符,它採用了“零擴展”,也就是說,無論值爲正負,都在高位補0。

/*移位運算符測試*/

public class BitMotion
{
   public static void main(String[] args)
   {
     int a = 15;
     int b = 2;
     int x = a << b;
     int y = a >> b;
     int z = a >>> b;
     System.out.println(a + "<<" + b + "=" + x );
     System.out.println(a + ">>" + b + "=" + y);
     System.out.println(a + ">>>" + b + "=" + z);
    }
}
輸出結果:
                 15 << 2 =60
                 15 >> 2 = 3
                 15 >>> 2 =3

六、賦值運算符
        賦值運算符是程序中最常用的運算符了,只要有變量的聲明,就要有賦值運算。如a = 3;這裏的a我們都知道是變量名,根據前面對變量的定義,我們可以知道這裏的a實際上就是內存空間的一個名字,它對應的是一段內存空間,一在要在這個空間放入3這個值。這個放入的過程就實現了賦值的過程。
              賦值運算一覽表

運算符

一般表示法

Java語言表示法

+=

a = a + b

a += b

-=

a = a - b

a -= b

*=

a = a * b

a *=b

/=

a=a / b

a /= b

%=

a = a % b

a %= b

>>=

a = a >> b

a >>= b

>>>=

a = a >>> b

a >>>= b


七、三元運算符
        三元運算符比較罕見,因爲它有三個運算對象,但它也確實屬於運算符的一種,因爲它最終也是產生一個值。它也可以轉化爲條件判斷語句,只不過這種處理方式更簡潔、明瞭。
        它的運算過程是這樣的:
         如果“布爾表達式”的結果是“true”,就返回值0;
         如果“布爾表達式”的結果是“false”,就返回值1;
         它的返回值做爲最終結果返回。

八、逗號運算符
        在Java中,逗號運算符的惟一使用場所就是在for循環語句中。

九、字符串運算符
        “+”號這個運算符,在Java中有一項特殊的用法,它不僅起到連接不同的字符串,還有一種隱式的轉型功能。

十、轉型運算符
        轉型運算符可以說是一種特殊的運算符,它是將一種類型的數據或對象,強制轉變爲另一種類型。

/*強制轉型測試*/

public class TypeTran
{
   public static void main(String[] args)
   {
     int x ;
     double y;
     x = (int)22.5 + (int)34.7;  //強制轉型可能引起精度丟失
     y = (double)x;
     System.out.println("x = " + x);
     System.out.println("y = " + y);
   }
}
輸出結果:
                  x = 56
                  y = 56.0
分析:
          可以發現,由於強制轉型,使數據精度丟失。系統會忽略強制轉型的檢查。所以對於強制轉型,必須清楚轉型是否可行。

         最後總結一下運算符的優先級

運算符

優先級

括號()

1最高

++、--

2

~、!

3

*、/、%

4

+、-(減)

5

<<、>>、>>>

6

>、<、>=、<=

7

==、!=

8

&

9

^

10

|

11

&&

12

||

13

? :

14

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