posts - 24,  comments - 29,  trackbacks - 0

                  Java語(yǔ)言中的表達(dá)式是由運(yùn)算符與操作數(shù)組合而成的,所謂的運(yùn)算符就是用來(lái)做運(yùn)算的符號(hào)。
                  在Java中的運(yùn)算符,基本上可分為算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符、轉(zhuǎn)型運(yùn)算符等。

          一、算術(shù)運(yùn)算符
                 所謂算術(shù)運(yùn)算符,也就是我們數(shù)學(xué)中學(xué)到的加、減、乘、除等運(yùn)算。這些操作可以對(duì)幾個(gè)不同類型的數(shù)字進(jìn)行混合運(yùn)算,為了保證操作的精度,系統(tǒng)在運(yùn)算的過(guò)程中會(huì)做相應(yīng)的轉(zhuǎn)換。
                1、數(shù)字精度
                 所謂數(shù)字精度,也就是系統(tǒng)在做數(shù)字之間的算術(shù)運(yùn)算時(shí),為了盡最大可能地保持計(jì)算機(jī)的準(zhǔn)確性,而自動(dòng)進(jìn)行相應(yīng)的轉(zhuǎn)換,將不同的數(shù)據(jù)類型轉(zhuǎn)變?yōu)榫茸罡叩臄?shù)據(jù)類型。規(guī)則如下:
                1)當(dāng)使用運(yùn)算符把兩個(gè)操作數(shù)結(jié)合到一起時(shí),在進(jìn)行運(yùn)算前兩個(gè)操作數(shù)會(huì)轉(zhuǎn)化成相同的類型。
                2)兩個(gè)操作數(shù)中有一個(gè)是double類型的,則另一個(gè)將轉(zhuǎn)換成double型。
                3)兩個(gè)操作數(shù)中有一個(gè)是float類型的,則另一個(gè)將也轉(zhuǎn)換成float型。
                4)兩個(gè)操作數(shù)中有一個(gè)是long類型的,則另一個(gè)將也轉(zhuǎn)換成long型。
                5)任何其它類型的操作,兩個(gè)操作數(shù)都要轉(zhuǎn)換成int類型。
                2、整數(shù)型運(yùn)算(int型)
                 對(duì)于int型的相關(guān)操作,加、減、乘的結(jié)果都是非常容易理解的,重點(diǎn)講一下除(/)的運(yùn)算。
                 兩個(gè)整數(shù)相除的結(jié)果是整數(shù),這一點(diǎn)與數(shù)學(xué)中是不同的,在Java中,兩個(gè)整數(shù)相除的結(jié)果類似于數(shù)學(xué)中的求模運(yùn)算。整除的余數(shù)是用%表示,例如15 / 2 = 7,而不是7.5,15 % 2 = 1。我們用程序驗(yàn)證一下:

          /*兩個(gè)整數(shù)相除及求余數(shù)*/

          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));
              }
          }

          輸出結(jié)果:
                           15 / 2 = 7
                           15 % 2 = 1
                           15 / 2.0  =  7.5
                           15 % 2.0 = 1.0

                  3、自增和自減運(yùn)算符
                  在循環(huán)與控制中,我們經(jīng)常會(huì)用到類似于計(jì)數(shù)器的運(yùn)算,它們的特征是每次的操作都是加1或減1。在Java中提供了自增、自減運(yùn)算符,X++使變量X的當(dāng)前值每次增加1,而X--是自減運(yùn)算符,每次操作使當(dāng)前X的值減1。例如:

          /*測(cè)試自增、自減操作*/

          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);
             }

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

          二、關(guān)系運(yùn)算符
                  Java具有完美的關(guān)系運(yùn)算符。這些關(guān)系運(yùn)算符基本上同數(shù)學(xué)中的關(guān)系運(yùn)算符是一致的。“>”大于、“<”小于、“>=”大于等于、“<=”小于等于、“==”等于、“!=”不等于。例如:

          /*關(guān)系運(yùn)算符測(cè)試*/

          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);
             }
          }
          輸出結(jié)果:
                           x = true
                           y = false
                           z = true

          三、邏輯運(yùn)算符
                  在Java語(yǔ)言中有三種邏輯運(yùn)算符,它們是NOT(非,以符號(hào)“!”表示)、AND(與,以符號(hào)“&&”表示、)OR(或,以符號(hào)“||”表示)。
                  1、NOT運(yùn)算符
                   NOT運(yùn)算符是用來(lái)表示相反的意思。
                                  NOT邏輯關(guān)系值表
                                    

          A

          !A

          true

          false

          false

          true


                   2、AND運(yùn)算符
                   AND運(yùn)算符表示“與”的意思,也就是和的意思。
                                 AND邏輯關(guān)系值表

          A

          B

          A&&B

          false

          false

          false

          true

          false

          false

          false

          true

          false

          true

          true

          true


                   3、OR運(yùn)算符
                   OR運(yùn)算符是用來(lái)表示“或”就像我們?nèi)粘I钪欣斫獾囊粯樱瑑烧咧灰幸粋€(gè)為“真”,結(jié)果就為“真”。
                               OR邏輯關(guān)系值表

          A

          B

          A||B

          false

          false

          false

          true

          false

          true

          false

          true

          true

          true

          true

          true


          /*邏輯運(yùn)算符測(cè)試*/

          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);
             }
          }
          輸出結(jié)果:
                           x = true
                           y = false
                           z = true

                 4、“短路”現(xiàn)象
                 在運(yùn)用邏輯運(yùn)算符進(jìn)行相關(guān)的操作時(shí),我們會(huì)遇到一種很有趣的現(xiàn)象;短路現(xiàn)象。
                 對(duì)于true && false根據(jù)我們的講述,處理的結(jié)果已經(jīng)是false了,也就是說(shuō)無(wú)論后面是結(jié)果是“真”還是“假”,整個(gè)語(yǔ)句的結(jié)果肯定是false了,所以系統(tǒng)就認(rèn)為已經(jīng)沒(méi)有必要再進(jìn)行比較下去了。也就不會(huì)再執(zhí)行了,這種理象就是我們所說(shuō)的短路現(xiàn)象。

          四、位運(yùn)算符
                    所有的數(shù)據(jù)、信息在計(jì)算機(jī)中都是以二進(jìn)制形式存在的。我們可以對(duì)整數(shù)的二進(jìn)制位進(jìn)行相關(guān)的操作。這就是按位運(yùn)算符,它主要包括:位的“與”、位的“或”、位的“非”、位的“異或”。
                  1)位的“與”,用符號(hào)“&”表示,它屬于二元運(yùn)算符。 與位運(yùn)算值表:

          A

          B

          A&B

          1

          1

          1

          1

          0

          0

          0

          1

          0

          0

          0

          0


                   2)位的“或”用符號(hào)“|”表示,它屬于二元運(yùn)算符。。   或位運(yùn)算值表:

          A

          B

          A|B

          1

          1

          1

          0

          1

          1

          1

          0

          1

          0

          0

          0


                    3)位的“非”,用符號(hào)“~”表示,它是一元運(yùn)算符,只對(duì)單個(gè)自變量起作用。它的作用是使二進(jìn)制按位“取反”。 非位運(yùn)算值表:

          A

          ~A

          1

          0

          0

          1


                     4)位的“異或”,用符號(hào)“^”表示,它屬于二元運(yùn)算符。異或位運(yùn)算值表:

          A

          B

          A^B

          1

          1

          0

          0

          1

          1

          1

          0

          1

          0

          0

          0



          /*測(cè)試位的四種運(yùn)算*/

          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);
           }
          }

          輸出結(jié)果:
                            15 & 2 = 2
                            15 | 2 = 15
                            15 ^ 2 = 13

          五、移位運(yùn)算符
                  移位運(yùn)算符的面向?qū)ο笠彩嵌M(jìn)制的“位”。可以單獨(dú)用移位運(yùn)算符來(lái)處理int型數(shù)據(jù)。它主要包括:左移位運(yùn)算符(<<)、“有符號(hào)”右移位運(yùn)算符(>>)、“無(wú)符號(hào)”右移運(yùn)算符(>>>)
                  1)左移位運(yùn)算符
                   左移位運(yùn)算符,用符號(hào)“<<”表示。它是將運(yùn)算符左邊的對(duì)象向左移運(yùn)動(dòng)運(yùn)算符右邊指定的位數(shù)(在低位補(bǔ)0)。
                  2)“有符號(hào)”右移運(yùn)算符
                  “有符號(hào)”右移運(yùn)算符,用符號(hào)“>>”表示。它是將運(yùn)算符左邊的運(yùn)算對(duì)象向右移動(dòng)運(yùn)算符右側(cè)指定的位數(shù)。它使用了“符號(hào)擴(kuò)展”機(jī)制,也就是說(shuō),如果值為正,在高位補(bǔ)0,若為負(fù),則在高位補(bǔ)1。
                  3)“無(wú)符號(hào)”右移運(yùn)算符
                  “無(wú)符號(hào)”右移運(yùn)算符,用符號(hào)“>>>”表示。它同“有符號(hào)”右移運(yùn)算符的移動(dòng)規(guī)則是一樣的,惟一的區(qū)別就是:“無(wú)符號(hào)”右移運(yùn)算符,它采用了“零擴(kuò)展”,也就是說(shuō),無(wú)論值為正負(fù),都在高位補(bǔ)0。

          /*移位運(yùn)算符測(cè)試*/

          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);
              }
          }
          輸出結(jié)果:
                           15 << 2 =60
                           15 >> 2 = 3
                           15 >>> 2 =3

          六、賦值運(yùn)算符
                  賦值運(yùn)算符是程序中最常用的運(yùn)算符了,只要有變量的聲明,就要有賦值運(yùn)算。如a = 3;這里的a我們都知道是變量名,根據(jù)前面對(duì)變量的定義,我們可以知道這里的a實(shí)際上就是內(nèi)存空間的一個(gè)名字,它對(duì)應(yīng)的是一段內(nèi)存空間,一在要在這個(gè)空間放入3這個(gè)值。這個(gè)放入的過(guò)程就實(shí)現(xiàn)了賦值的過(guò)程。
                        賦值運(yùn)算一覽表

          運(yùn)算符

          一般表示法

          Java語(yǔ)言表示法

          +=

          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


          七、三元運(yùn)算符
                  三元運(yùn)算符比較罕見(jiàn),因?yàn)樗腥齻€(gè)運(yùn)算對(duì)象,但它也確實(shí)屬于運(yùn)算符的一種,因?yàn)樗罱K也是產(chǎn)生一個(gè)值。它也可以轉(zhuǎn)化為條件判斷語(yǔ)句,只不過(guò)這種處理方式更簡(jiǎn)潔、明了。
                  它的運(yùn)算過(guò)程是這樣的:
                   如果“布爾表達(dá)式”的結(jié)果是“true”,就返回值0;
                   如果“布爾表達(dá)式”的結(jié)果是“false”,就返回值1;
                   它的返回值做為最終結(jié)果返回。

          八、逗號(hào)運(yùn)算符
                  在Java中,逗號(hào)運(yùn)算符的惟一使用場(chǎng)所就是在for循環(huán)語(yǔ)句中。

          九、字符串運(yùn)算符
                  “+”號(hào)這個(gè)運(yùn)算符,在Java中有一項(xiàng)特殊的用法,它不僅起到連接不同的字符串,還有一種隱式的轉(zhuǎn)型功能。

          十、轉(zhuǎn)型運(yùn)算符
                  轉(zhuǎn)型運(yùn)算符可以說(shuō)是一種特殊的運(yùn)算符,它是將一種類型的數(shù)據(jù)或?qū)ο螅瑥?qiáng)制轉(zhuǎn)變?yōu)榱硪环N類型。

          /*強(qiáng)制轉(zhuǎn)型測(cè)試*/

          public class TypeTran
          {
             public static void main(String[] args)
             {
               int x ;
               double y;
               x = (int)22.5 + (int)34.7;  //強(qiáng)制轉(zhuǎn)型可能引起精度丟失
               y = (double)x;
               System.out.println("x = " + x);
               System.out.println("y = " + y);
             }
          }
          輸出結(jié)果:
                            x = 56
                            y = 56.0
          分析:
                    可以發(fā)現(xiàn),由于強(qiáng)制轉(zhuǎn)型,使數(shù)據(jù)精度丟失。系統(tǒng)會(huì)忽略強(qiáng)制轉(zhuǎn)型的檢查。所以對(duì)于強(qiáng)制轉(zhuǎn)型,必須清楚轉(zhuǎn)型是否可行。

                   最后總結(jié)一下運(yùn)算符的優(yōu)先級(jí)

          運(yùn)算符

          優(yōu)先級(jí)

          括號(hào)()

          1最高

          ++、--

          2

          ~、!

          3

          *、/、%

          4

          +、-(減)

          5

          <<、>>、>>>

          6

          >、<、>=、<=

          7

          ==、!=

          8

          &

          9

          ^

          10

          |

          11

          &&

          12

          ||

          13

          ? :

          14


           

          posted on 2007-05-14 14:24 心隨Wǒ動(dòng) 閱讀(16915) 評(píng)論(8)  編輯  收藏

          FeedBack:
          # re: Java運(yùn)算符
          2007-05-14 16:22 | 我心依舊
          前三種運(yùn)算符都很重要,很常用.  回復(fù)  更多評(píng)論
            
          # re: Java運(yùn)算符
          2007-05-14 19:32 | 劉甘泉
          邏輯運(yùn)算符替換if else還是很常用的  回復(fù)  更多評(píng)論
            
          # re: Java運(yùn)算符[未登錄](méi)
          2007-07-18 13:13 | j
          按位異或和邏輯異或有什么區(qū)別阿?  回復(fù)  更多評(píng)論
            
          # re: Java運(yùn)算符
          2009-07-25 11:35 | Wardon
          @j
          很明顯啊,按位異或?qū)ο笫嵌M(jìn)制位,邏輯或?qū)ο笫遣紶栔?nbsp; 回復(fù)  更多評(píng)論
            
          # re: Java運(yùn)算符
          2013-01-30 16:11 | commonsLok
          頭暈了。。。  回復(fù)  更多評(píng)論
            
          # re: Java運(yùn)算符
          2013-03-20 21:40 | 4455
          # re: Java運(yùn)算符[未登錄](méi)
          2013-11-02 15:19 | Daniel
          @Wardon
          不是。 按位異或用于布爾值返回的也是布爾值,差別主要在于,邏輯異或會(huì)短路,而按位異或不會(huì)。
            回復(fù)  更多評(píng)論
            
          # re: Java運(yùn)算符
          2014-03-24 16:45 | 1336620740@qq.com
          ~的作用和反碼一樣的嗎?還是相當(dāng)于取5的補(bǔ)碼作用是一樣的?lz

          比如~5
            回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          QQ群:9028409
          QQ:29850994
          點(diǎn)擊這里給我發(fā)消息

          留言簿(2)

          隨筆檔案

          積分與排名

          • 積分 - 31459
          • 排名 - 1347

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 咸宁市| 米林县| 静宁县| 平遥县| 武陟县| 惠安县| 通州市| 林州市| 涞源县| 河曲县| 阳西县| 穆棱市| 内黄县| 德昌县| 同德县| 上蔡县| 天等县| 祁连县| 东乡县| 阳新县| 老河口市| 类乌齐县| 丹东市| 虎林市| 密山市| 淮南市| 来安县| 平顺县| 阿尔山市| 巴彦县| 扎鲁特旗| 桃园县| 双流县| 溆浦县| 北票市| 宿迁市| 略阳县| 浑源县| 忻城县| 五指山市| 历史|