談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽
          public class J0 {
          public static void main(String[] args) {
          String str1 = new String("strOne");
          String str2 = new String("strOne");
          String str3 = "strTwo";
          String str4 = "strTwo";

          System.out.println(str1 == str2);
          System.out.println(str3 == str4);

          }
          }
          估計答案是什么?
          是不是false,false ?
          因為 String 類不能直接 "==" 號比較!new 出來的兩個String對象不在同一內存。
          應該用 "equals()"。
          ------------------------------------
          可是答案是:false,true;
          ------------------------------------
          怎么理解呢?

          String str = new String("string");
          ?與 String str = "string";

          聲明:以下解釋是保證正確的,我會從內存空間上來解釋,比較清楚。

          區別是,new String是在堆空間上分配一個空間,將指針指向這個空間,每一個new都是新的空間,==判斷當然是不等。

          而String str = "ssss",說一下,在每種語言中對于字符串都有特殊的處理。
          Java有一個專門的字符串池來保存可以重用的字符串。對于相同的字面值(也就是"雙引號里面你看到東西")相同,多少個變量他們都指向相同的空間,==判斷當然相等。

          所以最正確的判斷字符串內容相等的方法,就是用equals方法。String類這個immuable的類已經覆蓋了這個從Object類繼承的eqauls方法,達到了對于內容相等的判斷。

          posted on 2007-01-05 09:19 壞男孩 閱讀(753) 評論(0)  編輯  收藏 所屬分類: java命令學習
          主站蜘蛛池模板: 大厂| 宝清县| 南平市| 永春县| 平塘县| 新昌县| 綦江县| 报价| 永川市| 华宁县| 晋城| 四子王旗| 连城县| 句容市| 栾城县| 柘荣县| 扶余县| 阜城县| 托里县| 巴中市| 绍兴市| 台北县| 洪江市| 界首市| 怀来县| 天门市| 大兴区| 大英县| 嘉义市| 福鼎市| 荔波县| 社会| 扬中市| 德化县| 桐柏县| 封开县| 建水县| 文山县| 会泽县| 应城市| 邹平县|