隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
          數(shù)據(jù)加載中……

          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方法是直接比較句柄的,而不是我們所希望的比較內容,所以我們不得不發(fā)現(xiàn)我們要比較兩個類的內容我們不得不在類中重寫equal()方法來實現(xiàn)比較兩個類的內容。

           

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


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


          網站導航:
           
          主站蜘蛛池模板: 称多县| 大庆市| 泰安市| 无为县| 友谊县| 上思县| 顺义区| 肥城市| 临夏市| 泾阳县| 大化| 正定县| 云霄县| 东阿县| 长沙市| 德格县| 大化| 张家川| 娱乐| 乐至县| 遂溪县| 嘉禾县| 微山县| 乌兰浩特市| 泸溪县| 深圳市| 和龙市| 澄城县| 年辖:市辖区| 醴陵市| 文成县| 延安市| 宝山区| 丁青县| 昌邑市| 石泉县| 慈溪市| 黄浦区| 东阿县| 渝中区| 桃园市|