<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 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)算符都與之類(lèi)似。
    3.1.1 賦值運(yùn)算符 =
          這是任何編程語(yǔ)言的最基本的運(yùn)算符,它用來(lái)給變量指定一個(gè)值。對(duì)于基本類(lèi)型來(lái)說(shuō),賦值都便于理解,將新的值賦給變量并保存在變量中供使用。但對(duì)于對(duì)象類(lèi)型來(lái)說(shuō),這里就有一點(diǎn)區(qū)別,特別需要提醒大家注意。

    對(duì)象類(lèi)型并不是把實(shí)際的值(這里是實(shí)例)賦給了對(duì)象類(lèi)型的變量,而是賦給的一個(gè)參考指針。這樣,源對(duì)象類(lèi)型的變量和新的這個(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++類(lèi)似。

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

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

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

    n        = = 、! = 

    這是比較變量是否相等或相同。這對(duì)于平常的比較基本類(lèi)型的變量容易理解,只是我們要強(qiáng)調(diào)一下對(duì)對(duì)象類(lèi)型的比較。與我們前面介紹的賦值運(yùn)算符類(lèi)似的是,它也是進(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ì)象是否屬于某類(lèi)或其超類(lèi)。但是這里需要提醒大家的是,如果你使用instanceof來(lái)比較不是一個(gè)繼承關(guān)系樹(shù)上的類(lèi),Java能夠編譯通過(guò),但運(yùn)行的時(shí)候會(huì)報(bào)錯(cuò)。另外,你可以對(duì)null對(duì)象使用這個(gè)運(yùn)算符,只是無(wú)論對(duì)于什么類(lèi)測(cè)試的結(jié)果都是false。

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

    3.1.5 自增++、自減--運(yùn)算符
    Java的自增和自減運(yùn)算符,與C語(yǔ)言類(lèi)似,同樣需要注意的是其放置的位置不同,可能的結(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ǔ)言類(lèi)似,也使用+作為連接字符串的運(yùn)算符,這實(shí)際是對(duì)String類(lèi)重載了+運(yùn)算符。

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

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

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

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

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

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

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

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

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

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

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

    3.3 優(yōu)先級(jí) 
          與其他編程語(yǔ)言類(lèi)似的,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ù)傳遞類(lèi)型主要可以分為兩種,值傳遞和引用傳遞。借助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)型來(lái)說(shuō),都采用的是值傳遞;而對(duì)于對(duì)象類(lèi)型則是使用的引用傳遞
    posted on 2011-10-09 21:32 Java_liyadong 閱讀(227) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产成人综合亚洲一区| 蜜臀AV免费一区二区三区| 久久久久亚洲av无码专区| 国产大片线上免费观看| 亚州**色毛片免费观看| 亚洲卡一卡2卡三卡4卡无卡三| 免费福利网站在线观看| 一级毛片大全免费播放下载| 亚洲专区先锋影音| 免费人成视频在线观看视频| 5555在线播放免费播放| 美女18毛片免费视频| 中文字幕亚洲综合久久2| 免费国产高清视频| 99国产精品永久免费视频| 成年网站免费入口在线观看| 亚洲视频在线观看| 热久久精品免费视频| 男人的天堂网免费网站| 美女露100%胸无遮挡免费观看| 亚洲日本一区二区三区| 亚洲国产成人久久综合区| 国产日本一线在线观看免费| 特级做A爰片毛片免费看无码| 亚洲Av永久无码精品黑人| 亚洲第一区香蕉_国产a| 亚洲精品无码久久不卡| 一二三四免费观看在线电影 | 亚洲精品无码成人片久久不卡| 亚洲精品无码久久久久| 四虎影视永久免费视频观看| 亚欧色视频在线观看免费| 中国毛片免费观看| 美女免费视频一区二区| 亚洲精品456人成在线| 亚洲精品人成在线观看| 久久亚洲国产午夜精品理论片| 免费成人在线观看| 卡1卡2卡3卡4卡5免费视频| 久久久久久精品成人免费图片| 99在线免费视频|