java中的equals()方法和"=="?

          ??? 在寫java程序時(shí)往往要遇到判斷兩個(gè)實(shí)例是否相等的問題,那么Object中的equals(Object),到底比較的是兩個(gè)實(shí)例中的什么呢?我認(rèn)為他們比較的是創(chuàng)建實(shí)例時(shí)所深成的hashCode,(可是我的直覺認(rèn)為不是這樣的),如下:
          ??? class Test {
          ??? ??? public String name;
          ???? }

          ??? Test t = new Test();
          ??? t.name = "hello";
          ??? Test two = new Test();
          ??? two.name = "hello";

          ??? 其中t.equals(two) 和  t == two 返回的都是false,(其中t和two這兩個(gè)實(shí)例所生成的hashCode是不相同的)

          ??? 而對(duì)如下:
          ??? String st = "hello";
          ??? String str = new String("hello");
          ??? 其中str.equals(str)和st == str返回的分別是true和false (其中st和str這兩個(gè)實(shí)例所生成的hashCode是相同的)

          ??? 這里我有一個(gè)問題,在什么情況下"=="才成立?以前我認(rèn)為兩個(gè)實(shí)例的hashCode向同這兩個(gè)實(shí)例就成立了,可是上面的例子已經(jīng)證明了不成立了。 那到底什么情況下"=="才成立呢?(不要告訴我,他們的條件是要在同一個(gè)實(shí)例的情況下,那我就倒!!!!!)

          ??? 那不同的實(shí)例與hashCode有什么樣的關(guān)系呢?
          posted on 2006-06-26 16:35 小橋 流水 閱讀(534) 評(píng)論(2)  編輯  收藏 所屬分類: java

          評(píng)論

          # re: java中的equals()方法和"=="? 2006-12-27 16:58 hdwt  回復(fù)  更多評(píng)論   

          先說一下基本類型和非自己創(chuàng)建的基本類型對(duì)象的==的作用,其他的我沒有測(cè)試所以我不敢隨便說.
          如果是基本數(shù)據(jù)類型:int ,float,long,double,byte,char
          例如:int a = 10;
          int b = 10;
          System.out.println(a==b);
          輸出都是true
          ------------------------------------------------
          如果是對(duì)象比較 Integer c = new Integer(10);
          Integer d = new Integer(10);
          System.out.println(c==d);
          那么輸出是false
          ------------------------------------------------
          如果是基本類型和對(duì)象(僅限于基本類類型的對(duì)象,Integer,Float,等等)
          float f1 = 4.2f;
          Float f2 = new Float(4.2f);
          System.out.println(f1==f2);
          那么輸出是true

          # re: java中的equals()方法和"=="? 2006-12-27 17:03 hdwt  回復(fù)  更多評(píng)論   

          對(duì)于String類型則另當(dāng)別論,因?yàn)樯婕暗絻?nèi)存節(jié)約的問題.在良葛格的<java學(xué)習(xí)筆記>一書中,有較的介紹.

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 临海市| 安顺市| 万宁市| 嵊州市| 托克逊县| 霍林郭勒市| 大庆市| 苍溪县| 瑞安市| 金川县| 兴和县| 康平县| 高淳县| 贵溪市| 扬州市| 吴江市| 民县| 随州市| 沙雅县| 丹巴县| 宜都市| 象山县| 出国| 陇西县| 屯昌县| 固始县| 澄城县| 岳西县| 军事| 开平市| 平阳县| 呈贡县| 常山县| 昌宁县| 宁河县| 明光市| 尉氏县| 萨迦县| 晋城| 德州市| 宾阳县|