隨筆-60  評(píng)論-117  文章-0  trackbacks-0
          這是一個(gè)很簡(jiǎn)單,但卻是像我這樣的初學(xué)者很容易混淆的問題。作為初學(xué)者想要理解某一問題 ,以我之見,就是動(dòng)手編個(gè)程序。
                = =和equals究竟有何區(qū)別?
          程序1:
          public class Test {
           public String judge(String a, String b) {
            if (a == b) {//如果a的內(nèi)存地址等于b的內(nèi)存地址,即a,b為同一個(gè)對(duì)象
             return "true";
            } else {
             return "false";
            }
           }

           public static void main(String args[]) {
            String a = new String("foo");//創(chuàng)建一個(gè)對(duì)象,將為它分配一個(gè)新空間。
            String b = new String("foo");
            Test test = new Test();
           System.out.println("result=="+test.judge(a, b));
           }
          }
          結(jié)果為:result==false
          程序2:
          public class Test {
           public String judge(String a, String b) {
            if (a.equals(b) ) { //如果a字符串的值等于b字符串的值
             return "true";
            } else {
             return "false";
            }
           }

           public static void main(String args[]) {
            String a = new String("foo");
            String b = new String("foo");
            Test test = new Test();
           System.out.println("result=="+test.judge(a, b));
           }
          }
          結(jié)果為:result==true
          程序3:
          public class Test {
           public String judge(String a, String b) {
            if (a==b) {
             return "true";
            } else {
             return "false";
            }
           }

           public static void main(String args[]) {
            String a = "foo";//將a指向這個(gè)字符串,不為它分配空間。
            String b = "foo";
            Test test = new Test();
           System.out.println("result=="+test.judge(a, b));
           }
          }
          結(jié)果為:result==true
          程序4:
          public class Test {
           public String judge(String a, String b) {
            if (a.equals(b)) {
             return "true";
            } else {
             return "false";
            }
           }

           public static void main(String args[]) {
            String a = "foo";
            String b = "foo";
            Test test = new Test();
           System.out.println("result=="+test.judge(a, b));
           }
          }

          結(jié)果為:result==true
          總結(jié)一下:
          但是“= =“操作符并不涉及到對(duì)象內(nèi)容的比較,只是說(shuō)這兩個(gè)對(duì)象是否為同一個(gè)。而對(duì)象內(nèi)容的比較,正是equals方法做的事。
          posted on 2007-04-17 13:35 靜兒 閱讀(744) 評(píng)論(3)  編輯  收藏

          評(píng)論:
          # re: = =和equals有何區(qū)別 2007-04-17 17:39 | 山風(fēng)小子
          溫故而知新,可以為師矣 :)  回復(fù)  更多評(píng)論
            
          # re: = =和equals有何區(qū)別[未登錄] 2009-04-02 18:01 | zhangqin
          不錯(cuò)啊,多謝了啊  回復(fù)  更多評(píng)論
            
          # re: = =和equals有何區(qū)別 2009-10-20 15:26 | 一直在努力
          很好 謝謝了 辛苦  回復(fù)  更多評(píng)論
            

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 依安县| 舞钢市| 永善县| 渑池县| 舞阳县| 武隆县| 浮梁县| 鄂托克旗| 简阳市| 保康县| 黑水县| 宝坻区| 米泉市| 黎平县| 澜沧| 太原市| 榆社县| 长春市| 宁阳县| 平顶山市| 伽师县| 隆尧县| 定襄县| 海南省| 湘西| 峨眉山市| 扬州市| 太原市| 道孚县| 湖北省| 海兴县| 南阳市| 密山市| 大姚县| 长海县| 大余县| 曲靖市| 航空| 漳浦县| 淮滨县| 清水县|