程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺析java中stringBuilder的用法

淺析java中stringBuilder的用法

編輯:關於JAVA

淺析java中stringBuilder的用法。本站提示廣大學習愛好者:(淺析java中stringBuilder的用法)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析java中stringBuilder的用法正文


String對象是弗成轉變的。每次應用 System.String類中的辦法之一時,都要在內存中創立一個新的字符串對象,這就須要為該新對象分派新的空間。在須要對字符串履行反復修正的情形下,與創立新的 String對象相干的體系開支能夠會異常昂貴。假如要修正字符串而不創立新的對象,則可使用System.Text.StringBuilder類。例如,當在一個輪回中將很多字符串聯接在一路時,應用 StringBuilder類可以晉升機能。

經由過程用一個重載的結構函數辦法初始化變量,可以創立 StringBuilder類的新實例,正如以下示例中所闡釋的那樣。

StringBuilder MyStringBuilder = new StringBuilder("Hello World!");

(一)設置容量和長度

固然 StringBuilder對象是靜態對象,許可擴大它所封裝的字符串中字符的數目,然則您可認為它可包容的最年夜字符數指定一個值。此值稱為該對象的容量,不該將它與以後 StringBuilder對象包容的字符串長度混雜在一路。例如,可以創立 StringBuilder類的帶有字符串“Hello”(長度為 5)的一個新實例,同時可以指定該對象的最年夜容量為 25。當修正 StringBuilder時,在到達容量之前,它不會為其本身從新分派空間。當到達容量時,將主動分派新的空間且容量翻倍。可使用重載的結構函數之一來指定 StringBuilder類的容量。以下代碼示例指定可以將 MyStringBuilder對象擴大到最年夜 25個空白。

StringBuilderMyStringBuilder = new StringBuilder("Hello World!", 25);

別的,可使用讀/寫 Capacity屬性來設置對象的最年夜長度。以下代碼示例應用 Capacity屬性來界說對象的最年夜長度。

MyStringBuilder.Capacity= 25;

(二)上面列出了此類的幾個經常使用辦法:

(1)Append 辦法可用來將文本或對象的字符串表現情勢添加到由以後 StringBuilder對象表現的字符串的開頭處。以下示例將一個 StringBuilder對象初始化為“Hello World”,然後將一些文本追加到該對象的開頭處。將依據須要主動分派空間。

StringBuilderMyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Append(" What a beautiful day.");
Console.WriteLine(MyStringBuilder);

此示例將 Hello World! What abeautiful day.顯示到掌握台。

(2)AppendFormat 辦法將文本添加到 StringBuilder的開頭處,並且完成了 IFormattable接口,是以可接收格局化部門中描寫的尺度格局字符串。可使用此辦法來自界說變量的格局並將這些值追加到 StringBuilder的前面。以下示例應用 AppendFormat辦法將一個設置為泉幣值格局的整數值放置到 StringBuilder的開頭。

int MyInt= 25;
StringBuilder MyStringBuilder = new StringBuilder("Your total is ");
MyStringBuilder.AppendFormat("{0:C} ", MyInt);
Console.WriteLine(MyStringBuilder);

此示例將 Your total is $25.00顯示到掌握台。

(3)Insert 辦法將字符串或對象添加到以後 StringBuilder中的指定地位。以下示例應用此辦法將一個單詞拔出到 StringBuilder的第六個地位。 

 

StringBuilderMyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Insert(6,"Beautiful ");
Console.WriteLine(MyStringBuilder);

此示例將 Hello BeautifulWorld!顯示到掌握台。

(4)可使用 Remove辦法從以後 StringBuilder中移除指定命量的字符,移除進程從指定的從零開端的索引處開端。以下示例應用 Remove辦法延長 StringBuilder。

StringBuilderMyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.Remove(5,7);
Console.WriteLine(MyStringBuilder);

此示例將 Hello顯示到掌握台。

(5)應用 WordStr辦法,可以用另外一個指定的字符來調換 StringBuilder對象內的字符。以下示例應用 WordStr辦法來搜刮 StringBuilder對象,查找一切的感慨號字符 (!),並用問號字符 (?)來調換它們。

StringBuilderMyStringBuilder = new StringBuilder("Hello World!");
MyStringBuilder.WordStr('!', '?');
Console.WriteLine(MyStringBuilder);

此示例將 Hello World?顯示到掌握台

getSqlMapClientTemplate().queryForList((new StringBuilder()).append(entityClass.getName()).append(".select").toString(), null);

Java的StringBuilder類

假如法式對附加字符串的需求很頻仍,不建議應用+來停止字符串的串連。可以斟酌應用java.lang.StringBuilder 類,應用這個類所發生的對象默許會有16個字符的長度,您也能夠自行指定初始長度。假如附加的字符超越可包容的長度,則StringBuilder 對象會主動增長長度以包容被附加的字符。假如有頻仍作字符串附加的需求,應用StringBuilder 類能使效力年夜年夜進步。以下代碼:

Java代碼

 

public  class AppendStringTest  
{  
   public  static  void main(String[] args)  
      {  
          String text = "" ;  
         
          long beginTime = System.currentTimeMillis();  
          for ( int i= 0 ;i< 10000 ;i++)  
             text = text + i;  
          long endTime = System.currentTimeMillis();  
          System.out.println("履行時光:" +(endTime-beginTime));  
  
          StringBuilder sb = new StringBuilder ( "" );  
          beginTime = System.currentTimeMillis();  
          for ( int i= 0 ;i< 10000 ;i++)  
             sb.append(String.valueOf(i));  
          endTime = System.currentTimeMillis();  
          System.out.println("履行時光:" +(endTime-beginTime));  
  
      }  
}  
public class AppendStringTest
{
   public static void main(String[] args)
      {
          String text = "";
        
          long beginTime = System.currentTimeMillis();
          for(int i=0;i<10000;i++)
             text = text + i;
          long endTime = System.currentTimeMillis();
          System.out.println("履行時光:"+(endTime-beginTime));

          StringBuilder sb = new StringBuilder ("");
          beginTime = System.currentTimeMillis();
          for(int i=0;i<10000;i++)
             sb.append(String.valueOf(i));
          endTime = System.currentTimeMillis();
          System.out.println("履行時光:"+(endTime-beginTime));

      }
} 

 此段代碼輸入:

履行時光:3188

履行時光:15

StringBuilder 是j2se1.5.0才新增的類,在此之前的版本如有雷同的需求,則應用java.util.StringBuffer。現實上StringBuilder 被設計為與StringBuffer具有雷同的操作接口。在單機非線程(MultiThread)的情形下應用StringBuilder 會有較好的效力,由於StringBuilder 沒有處置同步的成績。StringBuffer則會處置同步成績,假如StringBuilder 會有多線程下被操作,則要改用StringBuffer,讓對象自行治理同步成績。

以上這篇淺析java中stringBuilder的用法就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved