工作小驛

          Ninja!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            103 Posts :: 0 Stories :: 36 Comments :: 0 Trackbacks

              這是附加教程的第一節(jié),我們來介紹一下 ==和equals()的區(qū)別,==是相等,equals()也是相等。這兩個(gè)詞的區(qū)別是什么呢?這是找工作時(shí)很多面試官的問題。我們來解答一下。首先我們看這么個(gè)例子。實(shí)踐:

              public class TestEquals {

             public static void main(String[] args) {

              MyDate date1 = new MyDate(14, 3, 1976);

              MyDate date2 = new MyDate(14, 3, 1976);

           

              if ( date1 = = date2 ) {

                System.out.println("date1 is identical to date2");

              } else {

                System.out.println("date1 is not identical to date2");

              }

           

              if ( date1.equals(date2) ) {

                System.out.println("date1 is equal to date2");

              } else {

                System.out.println("date1 is not equal to date2");

              }

           

              System.out.println("設(shè) date2 = date1;");

              date2 = date1;

           

              if ( date1 == date2 ) {

                System.out.println("date1 is identical to date2");

              } else {

                System.out.println("date1 is not identical to date2");

              }}}

          這個(gè)例子中的MyDate類代碼如下

          public class MyDate {

           private int day;

           private int month;

           private int year;

           

           public MyDate(int day, int month, int year) {

              this.day   = day;

              this.month = month;

              this.year = year;

           }

           public boolean equals(Object o) {

             boolean result = false;

              if ( (o != null) && (o instanceof MyDate) ) {

                MyDate d = (MyDate) o;

                if ( (day == d.day) && (month == d.month)

                    && (year == d.year) ) {

                  result = true;

                }}

              return result;

           }

           public int hashCode() {

              return (day ^ month ^ year);

           }} 上述例子下載

          將這兩個(gè)類放置到同一個(gè)文件夾中,只需要編譯TestEquals類,就可以將MyDate一同編譯了。然后執(zhí)行java TestEquals查看結(jié)果。如圖28-1所示

          28-1

          也就是說date1 = = date2 雖然都是new MyDate(14, 3, 1976);但是new了兩次就是兩個(gè)對象了,不能==了。==是指引用是否相同。

              那么用equals()呢,equals()Object里的方法,任何對象都繼承Object。所以equals()方法也適用于所有的類。為什么這回date1date2equals了呢?equals()是指值是否相等。因?yàn)槎际牵?/span>1431976)所以相等。

              我們把date1賦值給date2,結(jié)果當(dāng)然是==了,都已經(jīng)把引用賦給它了。還能不==嗎?

          posted on 2007-08-09 19:55 王君 閱讀(246) 評論(2)  編輯  收藏 所屬分類: J2SE

          Feedback

          # re: 全新java初學(xué)者實(shí)踐附加教程1----"=="和equals() 2007-08-13 10:07 javapon
          up  回復(fù)  更多評論
            

          # re: 全新java初學(xué)者實(shí)踐附加教程1----"=="和equals() 2009-04-15 16:02 Jianguo
          請問哪里有全面的《全新java初學(xué)者實(shí)踐附加教程》?  回復(fù)  更多評論
            

          主站蜘蛛池模板: 景泰县| 鹿邑县| 会理县| 永州市| 武穴市| 浦东新区| 石楼县| 和静县| 哈巴河县| 丹巴县| 和林格尔县| 红河县| 锦州市| 沙洋县| 江北区| 桐乡市| 黄平县| 镇巴县| 阿合奇县| 游戏| 阿拉善右旗| 南漳县| 五指山市| 邛崃市| 泰和县| 蓬莱市| 建昌县| 和顺县| 澄江县| 浏阳市| 潜山县| 原平市| 商水县| 张家口市| 布尔津县| 星子县| 眉山市| 军事| 汕头市| 洛南县| 闻喜县|