隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
          數據加載中……

          Java對象比較

           

          Java中檢查兩個對象是否相等,這個看起來很簡單的事情但是實際做起來不一定是一個簡單的事情。我們可能首先想到的是==運算符號,但是這個運算符真的能比較兩個對象么?我們先看下面一段代碼:

             public static void main(String [] argv ){

                  Integer    A = new Integer(47);

                 Integer     B = new Integer(47);

                System.out.println( A == B ) ;

               System.out.println( A != B );

          }

          可能你覺得輸出的結果是true false ,但是結果正好相反,是:false,true。不要覺得奇怪,因為==實際比較的是兩個對象的句柄,而不是對象的內容,所以 A==B輸出為false,    而A != B  輸出為false.

          可能以為equals方法能幫我們解決這個問題,那么來試一下,

          class Value {
            int i;
          }

          public class EqualsMethod2 {
            public static void main(String[] args) {
              Value v1 = new Value();
              Value v2 = new Value();
              v1.i = v2.i = 100;
              System.out.println(v1.equals(v2));
            }
          } ///:~
          結果輸出的并不是我們所希望的true,而是false,這是因為類默認的equal方法是直接比較句柄的,而不是我們所希望的比較內容,所以我們不得不發現我們要比較兩個類的內容我們不得不在類中重寫equal()方法來實現比較兩個類的內容。

           

          posted on 2005-06-08 21:26 月亮 閱讀(450) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 保靖县| 英吉沙县| 三河市| 伊金霍洛旗| 宝坻区| 西吉县| 陈巴尔虎旗| 固安县| 海城市| 深州市| 扎赉特旗| 五大连池市| 平塘县| 云浮市| 云梦县| 郑州市| 洮南市| 固原市| 嘉鱼县| 昌乐县| 伊金霍洛旗| 越西县| 上高县| 张掖市| 星子县| 务川| 涡阳县| 上思县| 伊通| 青田县| 犍为县| 图木舒克市| 彝良县| 那曲县| 疏附县| 色达县| 平南县| 新昌县| 乌拉特后旗| 深州市| 留坝县|