<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      char,String,StringBuffer,StringBuilder區別

      在java中有3個類來負責字符的操作。

      1.Character是進行單個字符操作的,

      2.String 對一串字符進行操作。不可變類。

      3.StringBuffer 對一串字符進行操作,但是可變類(線程安全),適用于多線程程序中,保證同步性。

      4.StringBuilder 對一串字符進行操作,但是可變類(非線程安全),適用于單線程程序中,不保證同步性。

      String:
      是對象不是原始類型;
      為不可變對象,一旦被創建,就不能修改它的值;
      對于已經存在的String對象的修改都是重新創建一個新的對象,然后把新的值保存進去;
      String 是final類,即不能被繼承。

       

      StringBuffer:
      是一個可變對象,當對他進行修改的時候不會像String那樣重新建立對象,只能通過構造函數來建立;

      StringBuffer sb = new StringBuffer();//不能通過付值符號對他進行付值. sb = "welcome to here!";//error
      對象被建立以后,在內存中就會分配內存空間,并初始保存一個null.向StringBuffer中付值的時候可以通過它的append方法.
      sb.append("hello");

      字符串連接操作中StringBuffer的效率要比String高:

      String str = new String("welcome to ");
      str += "here";
      的處理步驟實際上是通過建立一個StringBuffer,然后調用append(),最后再將StringBuffer.toSting();
      這樣的話String的連接操作就比StringBuffer多出了一些附加操作,當然效率上要打折扣.

      并且由于String對象是不可變對象,每次操作String都會重新建立新的對象來保存新的值.這樣原來的對象就沒用了,就要被垃圾回收.這也是要影響性能的. 

      看看以下代碼:
      將26個英文字母重復加了5000次,

      String tempstr = "abcdefghijklmnopqrstuvwxyz";
      int times = 5000;
      long lstart1 = System.currentTimeMillis();
      String str = "";
      for (int i = 0; i < times; i++) {
           str += tempstr;
      }
      long lend1 = System.currentTimeMillis();
      long time = (lend1 - lstart1);
      System.out.println(time);

      5000次,25;10000次,92;100000,16200。

      我們再看看以下代碼

      String tempstr = "abcdefghijklmnopqrstuvwxyz";
      int times = 5000;
      long lstart2 = System.currentTimeMillis();
      StringBuffer sb = new StringBuffer();
      for (int i = 0; i < times; i++) {
            sb.append(tempstr);
      }
      long lend2 = System.currentTimeMillis();
      long time2 = (lend2 - lstart2);
      System.out.println(time2);

      5000次,2;10000次,4;100000次,44

      所以結論很明顯,StringBuffer的速度幾乎是String上萬倍。當然這個數據不是很準確。隨著循環的次數在100000次的時候,差異更大。 

      總結: 如果在程序中需要對字符串進行頻繁的修改連接操作的話.使用StringBuffer性能會更高

      StringBuilder:

        當我們在字符串緩沖去被多個線程使用時,JVM不能保證StringBuilder的操作是安全的,雖然他的速度最快,但是可以保證StringBuffer是可以正確操作的。當然大多數情況下就是我們是在單線程下進行的操作,所以大多數情況下是建議用StringBuilder而不用StringBuffer的,就是速度的原因。 

        在大部分情況下 StringBuilder > StringBuffer
        java.lang.StringBuilder一個可變的字符序列是5.0新增的。此類提供一個與StringBuffer兼容的API,但不保證同步。該類被設計用作StringBuffer的一個簡易替換,用在字符串緩沖區被單個線程使用的時候(這種情況很普遍)。如果可能,建議優先采用該類,因為在大多數實現中,它比StringBuffer要快。兩者的方法基本相同。

      posted @ 2012-11-22 11:26  ok_lanyan  閱讀(1244)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕亚洲人妻系列| 少妇真人直播免费视频| 精品少妇av蜜臀av| 18禁午夜宅男成年网站| 99久久精品费精品国产一区二区| 亚洲欧洲一区二区三区久久 | 国产成人精品视频不卡| 麻豆一区二区三区精品蜜桃| 亚洲中文字幕国产精品| 亚洲精品揄拍自拍首页一| 保康县| 国产精品亚洲mnbav网站| 久青草国产综合视频在线| 《特殊的精油按摩》3| 武强县| 亚洲av成人无网码天堂| 小污女小欲女导航| 麻豆国产成人av高清在线| 国产精品乱码久久久久久小说| 免费一区二三区三区蜜桃| 国产亚洲欧美日韩在线一区| 国产一区二区三区在线看| 性xxxxxx中国寡妇mm| 18禁亚洲深夜福利人口| 国内精品伊人久久久久av| 亚洲天堂av免费在线看| 亚洲一区精品伊人久久| 成人av一区二区亚洲精| 男女18禁啪啪无遮挡激烈网站| 成人3d动漫一区二区三区| 国产首页一区二区不卡| 亚洲国产精品无码观看久久 | 亚洲欧洲久久激情久av| 国产网友愉拍精品视频| 色综合国产一区二区三区| 国产成人无码午夜视频在线播放| 日韩av天堂综合网久久| 国产在线精品福利91香蕉| 美日韩av一区二区三区| 亚洲V天堂V手机在线| 亚洲精品成人区在线观看|