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學習筆記>一書中,有較的介紹.

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


          網站導航:
           
          主站蜘蛛池模板: 务川| 丹江口市| 海安县| 进贤县| 于田县| 合肥市| 丹江口市| 西乌| 丰原市| 隆子县| 宜昌市| 宁海县| 翼城县| 措美县| 盐边县| 普兰店市| 四子王旗| 忻城县| 曲周县| 惠州市| 昌吉市| 高邮市| 云浮市| 阿克苏市| 双辽市| 高州市| 瑞丽市| 大厂| 依安县| 都昌县| 衡阳县| 耒阳市| 白银市| 台南县| 香格里拉县| 友谊县| 南皮县| 玛多县| 许昌县| 长乐市| 峨山|