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

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          運(yùn)算符
          同大多數(shù)的編程語(yǔ)言一樣,Java語(yǔ)言也包含了許多的運(yùn)算符。如果大家學(xué)習(xí)過(guò)C或者C++,會(huì)發(fā)現(xiàn)下面介紹的各種Java的運(yùn)算符都與之類似。
          3.1.1 賦值運(yùn)算符 =
                這是任何編程語(yǔ)言的最基本的運(yùn)算符,它用來(lái)給變量指定一個(gè)值。對(duì)于基本類型來(lái)說(shuō),賦值都便于理解,將新的值賦給變量并保存在變量中供使用。但對(duì)于對(duì)象類型來(lái)說(shuō),這里就有一點(diǎn)區(qū)別,特別需要提醒大家注意。

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

          我們通過(guò)下面的例子可以進(jìn)一步來(lái)理解這個(gè)概念。

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

          }

          }
          復(fù)制代碼
          運(yùn)行結(jié)果:

          c:\java Project\Reference>;java ReferenceTest

          a.height = 10

          a.    height = 30 afer change to b

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

          3.1.2 比較運(yùn)算符
          比較運(yùn)算符是用來(lái)對(duì)相同數(shù)據(jù)類型的變量進(jìn)行大小或者是否相等、相同的比較,返回的是Boolean類型的值。因此也就大概分為兩類。

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

          這是比較變量的大小關(guān)系,與我們學(xué)過(guò)的任何編程語(yǔ)言相同,就不再介紹了。

          n        = = 、! = 

          這是比較變量是否相等或相同。這對(duì)于平常的比較基本類型的變量容易理解,只是我們要強(qiáng)調(diào)一下對(duì)對(duì)象類型的比較。與我們前面介紹的賦值運(yùn)算符類似的是,它也是進(jìn)行的對(duì)其參考指針的比較,而并不是比較兩個(gè)內(nèi)容上的差別。我們可以借助下面的例子來(lái)理解。

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

          }

          }
          復(fù)制代碼

          運(yùn)行結(jié)果:

          Is refernce a = = b ? false

          Is refernce a = = c ? true

          3.1.3 instanceof運(yùn)算符
                這個(gè)是Java語(yǔ)言特殊的一個(gè)運(yùn)算符,它是用來(lái)測(cè)試其對(duì)象是否屬于某類或其超類。但是這里需要提醒大家的是,如果你使用instanceof來(lái)比較不是一個(gè)繼承關(guān)系樹(shù)上的類,Java能夠編譯通過(guò),但運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò)。另外,你可以對(duì)null對(duì)象使用這個(gè)運(yùn)算符,只是無(wú)論對(duì)于什么類測(cè)試的結(jié)果都是false。

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

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

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

          }

          }
          復(fù)制代碼

          運(yùn)行結(jié)果:

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

          3.1.6 字符串連接運(yùn)算符 +
                Java語(yǔ)言與C語(yǔ)言類似,也使用+作為連接字符串的運(yùn)算符,這實(shí)際是對(duì)String類重載了+運(yùn)算符。

          3.1.7 位運(yùn)算符
          包括位移運(yùn)算和位邏輯運(yùn)算,這也與C語(yǔ)言相似。

          ->;        位移運(yùn)算

                >;>;右移、<<左移、>;>;>;無(wú)符號(hào)右移。

          ->;        位邏輯運(yùn)算

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

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

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

          3.1.10 類型轉(zhuǎn)換
                我們?cè)诰帉?xiě)程序的時(shí)候經(jīng)常需要對(duì)變量的類型進(jìn)行轉(zhuǎn)換,Java語(yǔ)言與其他的編程語(yǔ)言類似,也提供兩種類型轉(zhuǎn)換方式,即顯式轉(zhuǎn)換和隱式轉(zhuǎn)換。轉(zhuǎn)換的對(duì)象可分為兩類,一是基本類型,二是對(duì)象類型。

          這里需要掌握這樣一個(gè)要點(diǎn)。對(duì)于基本類型來(lái)說(shuō),凡是大轉(zhuǎn)小(以類型的寬度考慮)需要使用顯式轉(zhuǎn)換,也就是需要在變量前面強(qiáng)制給出需要轉(zhuǎn)換成的類型。而對(duì)小轉(zhuǎn)大來(lái)說(shuō),系統(tǒng)會(huì)自行進(jìn)行隱式轉(zhuǎn)換。

          對(duì)于對(duì)象類型來(lái)說(shuō),也與之類似。凡是超類轉(zhuǎn)子類則需要使用顯式強(qiáng)制轉(zhuǎn)換,而子類轉(zhuǎn)超類系統(tǒng)可自行進(jìn)行隱式轉(zhuǎn)換。另外還需要注意的一點(diǎn)是,對(duì)于不在一個(gè)繼承關(guān)系樹(shù)上的類要進(jìn)行強(qiáng)制轉(zhuǎn)換,Java編譯可通過(guò),但實(shí)際運(yùn)行會(huì)出錯(cuò)。

          3.2 equals()方法
                equals()方法實(shí)際與= =運(yùn)算符作用相同,也是用來(lái)比較相同類型的兩個(gè)變量是否相同或相等。只是有點(diǎn)區(qū)別的是,對(duì)于String類來(lái)說(shuō),它重載equals()方法,使用它不是比較兩個(gè)參考指針的區(qū)別,而是實(shí)際對(duì)所指向的具體內(nèi)容進(jìn)行比較,這也滿足了平時(shí)我們對(duì)比較字符串的實(shí)際需求。當(dāng)然,對(duì)其他類來(lái)說(shuō),你也可以重載equals()方法,使其滿足你的實(shí)際需要,來(lái)比較兩個(gè)對(duì)象類型的變量。

          3.3 優(yōu)先級(jí) 
                與其他編程語(yǔ)言類似的,Java語(yǔ)言的運(yùn)算符同樣涉及到優(yōu)先級(jí)別的問(wèn)題,書(shū)上130頁(yè)從高到低給出了所有運(yùn)算符的優(yōu)先級(jí)。建議大家,如果對(duì)某些運(yùn)算符之間的優(yōu)先級(jí)不是很清楚的時(shí)候,可以使用()來(lái)改變它們的優(yōu)先級(jí)關(guān)系。

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 巴青县| 余姚市| 安顺市| 拉萨市| 新野县| 山西省| 徐汇区| 曲靖市| 新疆| 工布江达县| 奈曼旗| 乌什县| 怀远县| 舒城县| 湘潭县| 布拖县| 菏泽市| 临邑县| 罗源县| 北票市| 航空| 略阳县| 清丰县| 桦南县| 西安市| 太和县| 嘉峪关市| 洛宁县| 应用必备| 西充县| 固镇县| 叙永县| 江油市| 抚宁县| 诏安县| 龙川县| 会理县| 定日县| 广河县| 大城县| 安平县|