隨筆 - 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 月亮 閱讀(449) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 台中市| 建宁县| 达日县| 英吉沙县| 米脂县| 宜章县| 宝坻区| 江门市| 调兵山市| 宁安市| 巴马| 朔州市| 营山县| 射洪县| 余江县| 南靖县| 广丰县| 库尔勒市| 西吉县| 定安县| 淮北市| 嘉荫县| 大冶市| 井冈山市| 思茅市| 航空| 石台县| 岫岩| 乌拉特后旗| 浦江县| 太和县| 岱山县| 黄冈市| 潢川县| 卓尼县| 和静县| 六盘水市| 安顺市| 洛宁县| 阜阳市| 阿拉善左旗|