隨筆 - 26  文章 - 2  trackbacks - 0
          <2011年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          運算符
          同大多數的編程語言一樣,Java語言也包含了許多的運算符。如果大家學習過C或者C++,會發現下面介紹的各種Java的運算符都與之類似。
          3.1.1 賦值運算符 =
                這是任何編程語言的最基本的運算符,它用來給變量指定一個值。對于基本類型來說,賦值都便于理解,將新的值賦給變量并保存在變量中供使用。但對于對象類型來說,這里就有一點區別,特別需要提醒大家注意。

          對象類型并不是把實際的值(這里是實例)賦給了對象類型的變量,而是賦給的一個參考指針。這樣,源對象類型的變量和新的這個變量實際上是指向的同一個實例,如果使用其中一個讓實例改變,那么相應的另一個所指向的實例也會改變。這里我們可以借用C里面的指針的概念來方便理解,但實際上Java是不具有指針的概念和定義的。

          我們通過下面的例子可以進一步來理解這個概念。

          import java.awt.Dimension;

          class ReferenceTest {

            Dimension a = new Dimension ( 5,10 );

            System.out.println (“a.height = ” + a.height ) ;

            Dimension b = a ;

            b.height = 30 ;

            System.out,println (“a.height = ” + a.height + “after change to b ”);

          }

          }
          復制代碼
          運行結果:

          c:\java Project\Reference>;java ReferenceTest

          a.height = 10

          a.    height = 30 afer change to b

          另外,賦值運算符還可以和其他的運算符,聯合組成新的賦值符。如*=、/=、+=、-=等等,這于C或者C++類似。

          3.1.2 比較運算符
          比較運算符是用來對相同數據類型的變量進行大小或者是否相等、相同的比較,返回的是Boolean類型的值。因此也就大概分為兩類。

          n        >;、>;=、<、<=

          這是比較變量的大小關系,與我們學過的任何編程語言相同,就不再介紹了。

          n        = = 、! = 

          這是比較變量是否相等或相同。這對于平常的比較基本類型的變量容易理解,只是我們要強調一下對對象類型的比較。與我們前面介紹的賦值運算符類似的是,它也是進行的對其參考指針的比較,而并不是比較兩個內容上的差別。我們可以借助下面的例子來理解。

          import java.awt.Button

          class CompareRefernce {

              public static void main ( String [ ] args ) {

                Button a = new Button ( “Exit”);

                Button b = new Button ( “Exit”);

                Button c = a;

                System.out.println ( “Is refernce a = = b ? ” + ( a = = b) ) ;

                System.out.println ( “Is refernce a = = c ? ” + ( a = = c) ) ;

          }

          }
          復制代碼

          運行結果:

          Is refernce a = = b ? false

          Is refernce a = = c ? true

          3.1.3 instanceof運算符
                這個是Java語言特殊的一個運算符,它是用來測試其對象是否屬于某類或其超類。但是這里需要提醒大家的是,如果你使用instanceof來比較不是一個繼承關系樹上的類,Java能夠編譯通過,但運行的時候會報錯。另外,你可以對null對象使用這個運算符,只是無論對于什么類測試的結果都是false。

          3.1.4 算術運算符
          加+、減-、乘*、除/和取模%運算,這與其他的編程語言類似,不再詳述。

          3.1.5 自增++、自減--運算符
          Java的自增和自減運算符,與C語言類似,同樣需要注意的是其放置的位置不同,可能的結果也不同。如果放置在變量的前面,表示先自增(減)再參與下步運算,而如果放置在后面則表示先參與運算再自增(減)。如下的例子說明了自增運算符的使用:

          class IncDec{

              public static void main ( String [ ] args ) {

                int a = 1;

                int b = 1;

                int c;

          int d;

          c = ++b;

          d = a++;

          c++;

                System.out.println ( “a = ” + a );

                System.out.println ( “b = ” + b );

                System.out.println ( “c = ” + c );

                System.out.println ( “d = ” + d );

          }

          }
          復制代碼

          運行結果:

          a = 2
          b = 2
          c = 3
          d = 1

          3.1.6 字符串連接運算符 +
                Java語言與C語言類似,也使用+作為連接字符串的運算符,這實際是對String類重載了+運算符。

          3.1.7 位運算符
          包括位移運算和位邏輯運算,這也與C語言相似。

          ->;        位移運算

                >;>;右移、<<左移、>;>;>;無符號右移。

          ->;        位邏輯運算

          &與、|或、^異或、~非運算,這于其他的編程語言類似,不再詳述。

          3.1.8 邏輯運算符
                與&&、或||,這于其他的編程語言類似,不再詳述。只是需要提醒大家不要把它們和位邏輯運算符混淆,這也是初學者最容易犯的錯誤。

          3.1.9 條件運算符 ?:
                這與C語言完全相同,具體不再解釋。

          3.1.10 類型轉換
                我們在編寫程序的時候經常需要對變量的類型進行轉換,Java語言與其他的編程語言類似,也提供兩種類型轉換方式,即顯式轉換和隱式轉換。轉換的對象可分為兩類,一是基本類型,二是對象類型。

          這里需要掌握這樣一個要點。對于基本類型來說,凡是大轉小(以類型的寬度考慮)需要使用顯式轉換,也就是需要在變量前面強制給出需要轉換成的類型。而對小轉大來說,系統會自行進行隱式轉換。

          對于對象類型來說,也與之類似。凡是超類轉子類則需要使用顯式強制轉換,而子類轉超類系統可自行進行隱式轉換。另外還需要注意的一點是,對于不在一個繼承關系樹上的類要進行強制轉換,Java編譯可通過,但實際運行會出錯。

          3.2 equals()方法
                equals()方法實際與= =運算符作用相同,也是用來比較相同類型的兩個變量是否相同或相等。只是有點區別的是,對于String類來說,它重載equals()方法,使用它不是比較兩個參考指針的區別,而是實際對所指向的具體內容進行比較,這也滿足了平時我們對比較字符串的實際需求。當然,對其他類來說,你也可以重載equals()方法,使其滿足你的實際需要,來比較兩個對象類型的變量。

          3.3 優先級 
                與其他編程語言類似的,Java語言的運算符同樣涉及到優先級別的問題,書上130頁從高到低給出了所有運算符的優先級。建議大家,如果對某些運算符之間的優先級不是很清楚的時候,可以使用()來改變它們的優先級關系。

          3.4 方法的參數傳遞
                最后,簡單討論一下方法的傳遞的問題。Java語言的參數傳遞類型主要可以分為兩種,值傳遞和引用傳遞。借助C語言的概念,我們知道,第一種就是把參數值直接復制成方法體的參數,這樣對方法體中的參數的改變不會影響到調用它的參數。而對于第二種,參數的引用(或者說是個指針)被傳遞給了方法體的參數,該引用用來訪問調用中指定的實際參數。這樣,對方法體參數的改變將會影響到調用方法體的參數。
                由于沒有指針的概念,Java的參數傳遞相對比較簡單。對于一般的基本類型來說,都采用的是值傳遞;而對于對象類型則是使用的引用傳遞
          posted on 2011-10-09 21:32 Java_liyadong 閱讀(227) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 华容县| 农安县| 老河口市| 江口县| 平阳县| 定结县| 壶关县| 东乌珠穆沁旗| 景谷| 和田市| 安泽县| 青冈县| 章丘市| 厦门市| 漯河市| 柳河县| 油尖旺区| 南京市| 岳普湖县| 黄陵县| 安达市| 宁城县| 华坪县| 通州市| 兴海县| 灌阳县| 渭南市| 远安县| 庆安县| 巫山县| 炎陵县| 西乌珠穆沁旗| 渭南市| 闵行区| 澄迈县| 西和县| 佳木斯市| 黄梅县| 广水市| 信丰县| 林周县|