談笑有鴻儒,往來無白丁

          在恰當的時間、地點以恰當的方式表達給恰當的人...  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持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命令學習
          主站蜘蛛池模板: 民县| 义乌市| 渑池县| 寻乌县| 赤城县| 景泰县| 安泽县| 闻喜县| 故城县| 成安县| 罗源县| 泗阳县| 明溪县| 永济市| 东安县| 句容市| 南投县| 绥江县| 濉溪县| 吉木萨尔县| 沧州市| 百色市| 渭南市| 鄂托克旗| 新兴县| 苗栗县| 泉州市| 美姑县| 临江市| 溧阳市| 桂东县| 慈利县| 兴海县| 洱源县| 柞水县| 深圳市| 钟祥市| 抚顺市| 大名县| 宣汉县| 株洲市|