隨筆-60  評論-117  文章-0  trackbacks-0
          這是一個很簡單,但卻是像我這樣的初學者很容易混淆的問題。作為初學者想要理解某一問題 ,以我之見,就是動手編個程序。
                = =和equals究竟有何區別?
          程序1:
          public class Test {
           public String judge(String a, String b) {
            if (a == b) {//如果a的內存地址等于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));
           }
          }
          結果為: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));
           }
          }
          結果為: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指向這個字符串,不為它分配空間。
            String b = "foo";
            Test test = new Test();
           System.out.println("result=="+test.judge(a, b));
           }
          }
          結果為: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));
           }
          }

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

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

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 读书| 南部县| 宜宾县| 武功县| 抚宁县| 尼勒克县| 永登县| 重庆市| 张家口市| 白朗县| 兰溪市| 佛坪县| 桑日县| 凌海市| 上蔡县| 南充市| 华池县| 广南县| 中宁县| 浪卡子县| 安塞县| 洪湖市| 新绛县| 昌黎县| 周至县| 临颍县| 大连市| 民乐县| 定安县| 黄骅市| 金阳县| 淮阳县| 府谷县| 张家口市| 丹棱县| 禄丰县| 崇明县| 炎陵县| 云龙县| 崇州市| 哈巴河县|