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

          ??? 在寫java程序時往往要遇到判斷兩個實例是否相等的問題,那么Object中的equals(Object),到底比較的是兩個實例中的什么呢?我認為他們比較的是創建實例時所深成的hashCode,(可是我的直覺認為不是這樣的),如下:
          ??? 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這兩個實例所生成的hashCode是不相同的)

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

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

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

          評論

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

          先說一下基本類型和非自己創建的基本類型對象的==的作用,其他的我沒有測試所以我不敢隨便說.
          如果是基本數據類型:int ,float,long,double,byte,char
          例如:int a = 10;
          int b = 10;
          System.out.println(a==b);
          輸出都是true
          ------------------------------------------------
          如果是對象比較 Integer c = new Integer(10);
          Integer d = new Integer(10);
          System.out.println(c==d);
          那么輸出是false
          ------------------------------------------------
          如果是基本類型和對象(僅限于基本類類型的對象,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  回復  更多評論   

          對于String類型則另當別論,因為涉及到內存節約的問題.在良葛格的<java學習筆記>一書中,有較的介紹.

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


          網站導航:
           
          主站蜘蛛池模板: 军事| 喀喇| 桂东县| 仁化县| 乌拉特后旗| 宜兰市| 塔河县| 颍上县| 芜湖市| 凤台县| 山东省| 灌云县| 繁昌县| 内丘县| 苗栗县| 衡南县| 武宣县| 项城市| 威宁| 三门峡市| 包头市| 祥云县| 喀喇沁旗| 加查县| 文安县| 寿宁县| 崇信县| 汤原县| 揭东县| 迁安市| 军事| 普兰店市| 广宁县| 两当县| 左贡县| 和政县| 北碚区| 新兴县| 铜鼓县| 佳木斯市| 洛浦县|