如何學(xué)好java

          如何學(xué)好java,其實(shí)很簡單,只要用心體會,慢慢積累!
          posts - 106, comments - 7, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          StringBuffer與String的區(qū)別

          Posted on 2011-05-03 16:02 哈希 閱讀(204) 評論(0)  編輯  收藏 所屬分類: java 代碼

          string和stringbuffer區(qū)別
          這是好友面試的一道題,其實(shí)我知道使用的區(qū)別,StringBuffer必須new出來,StringBuffer的append的效率比string的+=的效率高,
          其實(shí)發(fā)現(xiàn)還有很大的區(qū)別,看了看以前scjp的考題

          Test


          答案是 javajavaC
          這是Java參數(shù)傳遞(by value)造成的
          而題目中第七行text = text.append ("C"),append方法會改變text中的值
          而這個text與main中的textBuffer是指向同一個對象,所以對應(yīng)的輸出是javac。
          string的值永遠(yuǎn)不會改變!
          String a = "a";//假設(shè)a指向地址0x0001,
          a = "b";//重新負(fù)值后a指向地址0x0002,但0x0001地址中保存的"a"依舊存在,但已經(jīng)不再是a所指向的。
          從表面上看String類型的對象改變了值,但事實(shí)是他不能改變值,只能改變指向的地址
          StringBuffer則不同,直接改變指向的地址中保留的值
          還有

          public static void main(String[] args) {
                  StringBuffer s1 
          = new StringBuffer("a");
                  StringBuffer s2 
          = new StringBuffer("a");
                  s1.equals(s2);
          //為什么是false
                  System.out.println(s1.equals(s2));
                  String s3 
          = new String("a");
                  String s4 
          = new String("a");
                  s3.equals(s4);
          //為什么是true
                  System.out.println(s3.equals(s4));
              }
             


          StringBuffer類中沒有重新定義equals這個方法,因此這個方法就來自O(shè)bject類,
          而Object類中的equals方法是用來比較地址的,所以等于false.

          String類中重新定義了equals這個方法,而且比較的是值,而不是地址。所以會是
          true。

          主站蜘蛛池模板: 武功县| 伊川县| 友谊县| 开平市| 宁阳县| 曲麻莱县| 广州市| 农安县| 黄平县| 通海县| 顺义区| 本溪市| 沂源县| 婺源县| 怀宁县| 灵丘县| 湾仔区| 临桂县| 余庆县| 丽水市| 枣强县| 库尔勒市| 湖北省| 车致| 南阳市| 靖江市| 威信县| 上杭县| 清远市| 嵊泗县| 龙山县| 乡城县| 泾阳县| 平谷区| 清水河县| 永吉县| 淳安县| 缙云县| 五莲县| 鄱阳县| 景德镇市|