隨筆-60  評論-117  文章-0  trackbacks-0
          這是一個很簡單,但卻是像我這樣的初學者很容易混淆的問題。作為初學者想要理解某一問題 ,以我之見,就是動手編個程序。
                = =和equals究竟有何區(qū)別?
          程序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");//創(chuàng)建一個對象,將為它分配一個新空間。
            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有何區(qū)別 2007-04-17 17:39 | 山風小子
          溫故而知新,可以為師矣 :)  回復  更多評論
            
          # re: = =和equals有何區(qū)別[未登錄] 2009-04-02 18:01 | zhangqin
          不錯啊,多謝了啊  回復  更多評論
            
          # re: = =和equals有何區(qū)別 2009-10-20 15:26 | 一直在努力
          很好 謝謝了 辛苦  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 宁国市| 延津县| 体育| 溆浦县| 阳西县| 高雄县| 屏山县| 曲沃县| 合肥市| 绥滨县| 阿尔山市| 成都市| 腾冲县| 铜川市| 册亨县| 韩城市| 邛崃市| 邓州市| 霍州市| 秀山| 德钦县| 旌德县| 措勤县| 弋阳县| 宝鸡市| 宜都市| 永宁县| 博兴县| 弥渡县| 大同县| 徐闻县| 三原县| 专栏| 商都县| 蕲春县| 罗田县| 东阿县| 雷山县| 乐业县| 边坝县| 贵定县|