談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持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 壞男孩 閱讀(744) 評論(0)  編輯  收藏 所屬分類: java命令學習
          主站蜘蛛池模板: 鹤岗市| 双柏县| 屯门区| 盐津县| 宁化县| 铜梁县| 雷山县| 秦安县| 长宁县| 衡阳县| 汝州市| 龙江县| 宜君县| 临湘市| 山西省| 东海县| 玉门市| 朝阳市| 错那县| 女性| 宣汉县| 灵丘县| 独山县| 武邑县| 通化市| 柳州市| 宁河县| 连云港市| 太白县| 富宁县| 包头市| 农安县| 榆树市| 北京市| 旬阳县| 安顺市| 沂源县| 大石桥市| 买车| 库尔勒市| 辰溪县|