SEOIT

          SEO學(xué)習(xí)

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            6 Posts :: 1 Stories :: 2 Comments :: 0 Trackbacks
          關(guān)系運(yùn)算符==和!=也適用于所有對(duì)象,但它們的含義通常會(huì)使初涉Java領(lǐng)域的人找不到北。下面是一個(gè)例子:

              //: Equivalence.java

              public class Equivalence {

              public static void main(String[] args) {

              Integer n1 = new Integer(47);

              Integer n2 = new Integer(47);

              System.out.println(n1 == n2);

              System.out.println(n1 != n2);

              }

              } ///:~

              其中,表達(dá)式System.out.println(n1 == n2)可打印出內(nèi)部的布爾比較結(jié)果。一般人都會(huì)認(rèn)為輸出結(jié)果肯定先是true,再是false,因?yàn)閮蓚€(gè)Integer對(duì)象都是相同的。但盡管對(duì)象的內(nèi)容相同,句柄卻是不同的,而==和!=比較的正好就是對(duì)象句柄。所以輸出結(jié)果實(shí)際上先是false,再是true。這自然會(huì)使第一次接觸的人感到驚奇。

              若想對(duì)比兩個(gè)對(duì)象的實(shí)際內(nèi)容是否相同,又該如何操作呢?此時(shí),必須使用所有對(duì)象都適用的特殊方法equals()。但這個(gè)方法不適用于“主類型”,那些類型直接使用==和!=即可。下面舉例說明如何使用:

              //: EqualsMethod.java

              public class EqualsMethod {

              public static void main(String[] args) {

              Integer n1 = new Integer(47);

              Integer n2 = new Integer(47);

              System.out.println(n1.equals(n2));

              }

              } ///:~

              正如我們預(yù)計(jì)的那樣,此時(shí)得到的結(jié)果是true。但事情并未到此結(jié)束!假設(shè)您創(chuàng)建了自己的類,就象下面這樣:

              //: EqualsMethod2.java

              class Value {

              int i;

              }

              public class EqualsMethod2 {

              public static void main(String[] args) {

              Value v1 = new Value();

              Value v2 = new Value();

              v1.i = v2.i = 100;

              System.out.println(v1.equals(v2));

              }

              } ///:~

              此時(shí)的結(jié)果又變回了false!這是由于equals()的默認(rèn)行為是比較句柄。所以除非在自己的新類中改變了equals(),否則不可能表現(xiàn)出我們希望的行為。不幸的是,要到第7章才會(huì)學(xué)習(xí)如何改變行為。但要注意equals()的這種行為方式同時(shí)或許能夠避免一些“災(zāi)難”性的事件。

              大多數(shù)Java類庫(kù)都實(shí)現(xiàn)了equals(),所以它實(shí)際比較的是對(duì)象的內(nèi)容,而非它們的句柄


          中國(guó)IT實(shí)驗(yàn)室

          posted on 2009-11-27 16:07 文化 閱讀(468) 評(píng)論(1)  編輯  收藏

          Feedback

          # re: 句柄以及對(duì)象的比較java 2009-11-28 21:31 bzp
          恩,equals是很有意義的,需要搞清這個(gè)對(duì)象equals比較的是什么  回復(fù)  更多評(píng)論
            


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


          網(wǎng)站導(dǎo)航:
           
          fag進(jìn)口軸承 nsk進(jìn)口軸承 timken進(jìn)口軸承 二水氯化鈣 天津不銹鋼 天津服裝批發(fā) 天津裝修 孕婦裝批發(fā) 無水氯化鈣 氯化鈣 自動(dòng)化 融雪劑 防凍液 無水氯化鈣 二水氯化鈣 安卓手機(jī)推薦 氯化鈣價(jià)格不銹鋼 不銹鋼 淘寶網(wǎng)女裝
          主站蜘蛛池模板: 新泰市| 南召县| 七台河市| 衡阳市| 赫章县| 杭锦旗| 女性| 台湾省| 松阳县| 驻马店市| 育儿| 铜鼓县| 麻栗坡县| 龙门县| 会宁县| 葫芦岛市| 桂东县| 丽水市| 聊城市| 监利县| 庆云县| 海兴县| 昔阳县| 方正县| 原平市| 武宣县| 双桥区| 大宁县| 龙州县| 黄骅市| 咸宁市| 屯留县| 西平县| 长子县| 肥城市| 禄丰县| 古交市| 乐昌市| 青浦区| 敖汉旗| 繁昌县|