隨筆-60  評論-117  文章-0  trackbacks-0
          這是一個很簡單,但卻是像我這樣的初學(xué)者很容易混淆的問題。作為初學(xué)者想要理解某一問題 ,以我之見,就是動手編個程序。
                = =和equals究竟有何區(qū)別?
          程序1:
          public class Test {
           public String judge(String a, String b) {
            if (a == b) {//如果a的內(nèi)存地址等于b的內(nèi)存地址,即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));
           }
          }
          結(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指向這個字符串,不為它分配空間。
            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é)一下:
          但是“= =“操作符并不涉及到對象內(nèi)容的比較,只是說這兩個對象是否為同一個。而對象內(nèi)容的比較,正是equals方法做的事。
          posted on 2007-04-17 13:35 靜兒 閱讀(745) 評論(3)  編輯  收藏

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 叙永县| 蓬莱市| 蓝田县| 兴文县| 沂水县| 曲阜市| 郓城县| 大埔区| 五河县| 大连市| 彰化县| 商河县| 庐江县| 敦化市| 天台县| 新宁县| 邹平县| 黎平县| 竹山县| 鄂托克前旗| 保定市| 台东县| 沙洋县| 土默特右旗| 读书| 夹江县| 佛学| 盐津县| 顺义区| 京山县| 同心县| 锡林浩特市| 右玉县| 奉化市| 三台县| 宜良县| 安岳县| 桂平市| 改则县| 娱乐| 台东县|