EffieR

          最符合理智的莫過于對理智的否定

           

          equals & ==

          1.? 先了解:string a=new string("EffieR"); 表示一定要分配內(nèi)存string對象,還有相應(yīng)的引? 用。string b="EffieR",此時(shí)就不再分配內(nèi)存,而是建立一個(gè)新的引用b指向同一個(gè)對象"EffieR".
          ?
          例如:
          public class TestOne
          ?{
          ??? public static void main(String[] args) {
          ??????? String s1 = "Monday";
          ??????? String s2 = "Monday";
          ??????? if (s1 == s2)
          ??????????? System.out.println("s1 == s2");
          ??????? else
          ??????????? System.out.println("s1 != s2");
          ??? }
          }


          2. 如果是兩個(gè)新的對象(new),內(nèi)存肯定不同,那么引用比較時(shí)也不相同。
          ??? 而調(diào)用equals時(shí)則是比較對象的內(nèi)容,可實(shí)現(xiàn)我們的內(nèi)容比較。
          例如:
          public class? Testtwo
          {
          ?public static void main(String[] args)
          ?{
          ?? String a=new String("foo");
          ???????? String b=new String("foo");
          ??
          ?? System.out.println("==:"+ (a==b) );
          ?? System.out.println("equals: "+ a.equals(b));
          ??
          ??
          ?}
          }

          3. string.intern(); 來釋放相同值的string內(nèi)存

          例如:
          public class TestThree
          {

          ?/**
          ? * @param args
          ? */
          ?public static void main(String[] args)
          ?{
          ??// TODO Auto-generated method stub
          ?? String a="foo";
          ??
          ???????? String b=new String("foo").intern();
          ??
          ?? System.out.println("==:"+ (a==b) );
          ?? System.out.println("equals: "+ a.equals(b));
          ??

          ?}

          }

          4. 測試直接繼承Object的方法equals()

          ?例如:
          class testEquals
          {
          ?testEquals()
          ?{
          ??System.out.println("testEquals object");
          ?}

          };
          ?
          public class? TestFour
          {
          ?public static void main(String[] args)
          ?{
          ??
          ??
          ???????? testEquals e1=new testEquals();
          ?? testEquals e2=new testEquals();
          ?? System.out.println(e1.equals(e2));
          ???
          ?}
          }

          5. 創(chuàng)建自己的類,覆蓋equals()


          例如:

          class testEquals2
          {
          ??? private int a;
          ?testEquals2(int p)
          ?{
          ??
          ??a=p;
          ??
          ?}
          ?public int getMember()
          ?{
          ??return this.a;
          ?}
          ?public boolean equals(testEquals2 ob)
          ?{
          ??int a,b;
          ??a=this.getMember();
          ??b=ob.getMember();
          ???? return a==b;
          ?}
          };

          public class TestFive
          {
          ?public static void main(String[] args)
          ?{
          ????? testEquals2 e3=new testEquals2(11);
          ?? testEquals2 e4=new testEquals2(11);
          ?? System.out.println(e3.equals(e4));
          ?}
          }

          6...

          posted on 2006-04-29 13:38 EffieR 閱讀(638) 評論(0)  編輯  收藏 所屬分類: 學(xué)習(xí)和技術(shù)


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


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章檔案

          相冊

          deep world

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 灵石县| 梅州市| 朝阳县| 霍邱县| 关岭| 巴林右旗| 平舆县| 南投县| 通城县| 大渡口区| 连平县| 洛隆县| 通辽市| 宜兴市| 新蔡县| 永兴县| 吉首市| 桐乡市| 泰州市| 郴州市| 苏州市| 丰原市| 洛宁县| 铁岭县| 新平| 南澳县| 昌平区| 远安县| 都兰县| 西华县| 罗甸县| 公安县| 青海省| 尉氏县| 米易县| 马尔康县| 辛集市| 鞍山市| 衡阳县| 陆丰市| 深圳市|