數(shù)據(jù)加載中……

          2010年7月9日

          string和StringBuffer的區(qū)別

          如果你在網(wǎng)上一搜,會有非常多的答案,其中最多的就是String是不可變而StringBuffer是可變的,但是這可變與不可變究竟是什么意思呢?如果你能用IDE進行debug的話,你就會發(fā)現(xiàn),String實例化以后所有的屬性都是final的,而StringBuffer確不是,這就是可變與不可變。下面引用SCJP的試題來解釋一下這個例子:

          java 代碼
          1. public class Test {   
          2.    public static void stringReplace (String text) {   
          3.     text = text.replace('j' , 'i');   
          4.     }   
          5.       
          6.    public static void bufferReplace (StringBuffer text) {   
          7.     text = text.append("C");   
          8.     }   
          9.       
          10.     public static void main (String args[]) {   
          11.      String textString = new String ("java");   
          12.      StringBuffer textBuffer = new StringBuffer ("java");   
          13.        
          14.      stringReplace (textString);   
          15.      bufferReplace (textBuffer);   
          16.        
          17.      System.out.println (textString + textBuffer);   
          18.      }   
          19.      }   

          答案是 javajavaC

          這是因為第七行text = text.append ("C"),append方法會改變text中的值,而text與textBuffer指向的地址是相同的。因此會打印javaC

          再舉個例子:

          String a = "a"; //假設(shè)a指向地址0x0001

          a = "b";//重新賦值后a指向地址0x0002,但0x0001地址中保存的"a"依舊存在,但已經(jīng)不再是a所指向的。

          因此String的操作都是改變賦值地址而不是改變值操作

          posted @ 2010-08-05 16:32 Bill_Xie 閱讀(124) | 評論 (0)編輯 收藏
          tomcat的用戶配置

          <tomcat-users>
          <role rolename="manager"/>
            <role rolename="admin"/>
            <user username="admin" password="admin" roles="admin,manager"/>
          </tomcat-users>

          posted @ 2010-07-09 16:50 Bill_Xie 閱讀(150) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 涞源县| 玉门市| 凤山县| 招远市| 岢岚县| 前郭尔| 临高县| 油尖旺区| 沾益县| 博湖县| 奉节县| 泾源县| 黔南| 东光县| 晋城| 新昌县| 冷水江市| 绥阳县| 蒙自县| 大渡口区| 永仁县| 博客| 台湾省| 日喀则市| 西盟| 潞西市| 旺苍县| 阿拉善左旗| 思南县| 苏州市| 南陵县| 扶余县| 壤塘县| 福建省| 漠河县| 湖北省| 五原县| 玉林市| 吉木萨尔县| 潢川县| 德阳市|