程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> StringBuffer幫你減輕Java的負擔

StringBuffer幫你減輕Java的負擔

編輯:JAVA編程入門知識

  處理文本值是程序員的日常工作,通常用標准的Java String類來完成與文本有關的需求。它對於很多小任務確實很適用,但是假如處理的是大型任務,它會大量消耗系統資源。由於這個原因,JDK引入了StringBuffer類以提供一條處理字符串的有效路徑。讓我們來看看怎樣用這個類來提升性能。
  
  為什麼不用標准的String?
  
  Java String對象是常量字符串。一旦被初始化和付值,它的值和所分配的內存就被固定了。假如硬要改變它的值,將會產生一個包含新值的新String對象。這就是String對象會消耗掉很多資源的原因。下面的代碼創建了一個String對象並使用串聯(+)符號來為它添加更多字符:
  
  String sample1=new String(“Builder.com”);
  
  sample1+=”is”;
  
  sample1+=”the place”;
  
  sample1+=”to be.”;
  
  系統最終會創建四個String對象來完成上面的替換。其中第一個的文本是Builder.com。然後每次添加文本時都會創建一個新的對象。
  
  這種方法的問題在於為了這麼一個簡單的過程而消耗了太多的資源。在這個例子中其影響也許很小(指給出了很少的代碼),但是在一個擁有多得多操作的大型應用程序中這樣做就會使性能下降。StringBuffer類所要解決的正是這個問題。
  
  用StringBuffer處理字符串
  StringBuffer類被設計用與創建和操作動態字符串信息。為該對象分配的內存會自動擴展以容納新增的文本。有三種方法來創建一個新的StringBuffer對象:使用初始化字符串、設定大小以及使用默認構造函數:
  
  StringBuffer sb=new StringBuffer();
  
  StringBuffer sb=new StringBuffer(30);
  
  StringBuffer sb=new StringBuffer(“Builder.com”);
  
  第一行創建了不包含任何文本的對象,默認的容量是16個字符。類的第二個實例也不包含文本,容量是30個字符,最後一行創建了一個擁有初始化值的對象。StringBuffer類位於java.lang基礎包中,因此要使用它的話不需要非凡的引入語句。
  一旦創建了StringBuffer類的對象,就可以使用StringBuffer類的大量方法和屬性。最顯著的方法是append,它將文本添加到當前StringBuffer對象內容的結尾。下面的代碼示例了append方法的語法:
  
  StringBuffer sb=new StringBuffer();
  
  sb.append(“B”);
  
  sb.append(“u”);
  
  sb.append(“i”);
  
  sb.append(“l”);
  
  sb.append(“d”);
  
  sb.append(“e”);
  
  sb.append(“r”);
  
  sb.append(“.com”);
  
  System.out.println(sb.toString());
  
  這些代碼創建了Builder.com字符串並將它送往標准輸出,但是只創建了一個對象。假如使用String對象就需要八個以上的對象。注重代碼利用了StringBuffer類的toString方法。這個方法將其內容轉換成一個可以被用於輸出的字符串對象。它答應操作對應的文本用於輸出或數據存儲。
  
  append方法有十種重載形式,答應將各種類型的數據添加到對象的末尾。StringBuffer類還提供了處理對象內部數據的方法。
  StringBuffer的容量
  
  可以使用capacity和length方法來設定對象內的字符數。capacity方法返回為對象分配的字符數(內存)。假如超過了容量,它會自動擴展以符合需求。length方法返回對象目前存儲的字符數。可以通過setLength方法來增加其長度。另外,對象的容量可以通過ensureCapacity方法來擴展。它建立了對象的最小容量,因此假如超出則不會有任何問題。下面的代碼用到了這些方法:
  
  StringBuffer sb=new StringBuffer();
  
  sb.ensureCapacity(40);
  
  sb.append(“Builder.com is awesome!”);
  Systrm.out.println(sb.toString());
  
  sb.setLength(11);
  
  Systrm.out.println(sb.toString());
  
  代碼設置了字符串的容量並為其付值。length屬性被重新設置了,因此文本被截斷了。輸入結果如下:
  
  Builder.com is awesome!
  
  Builder.com
  
  操作字符串
  還有更多的方法來處理存儲在StringBuffer對象內的字符串。以下列舉了幾個例子:
  
  CharAt返回字符串中的單個字符。
  SetCharAt為字符串中的單個字符付值或進行替換。
  GetChars返回字符串的一個子字符串。
  Insert在字符串指定位置插入值。它有多個重載版本以容納各種數據類型。
  Substring返回字符串的一個子集。
  Reverse倒置StringBuffer的內容。
  所有的方法對於操作值來說都是很有用的,但是reverse方法最酷了——它使你只用一個調用就輕松地倒置了一個字符串。下面的代碼和數出結果作了示范:
  
  StringBuffer sb=new StringBuffer();
  
  sb.ensureCapacity(100);
  
  sb.append(“Builder.com!”);
  
  System.out.println(sb.toString());
  
  sb.reverse();
  
  Systrm.out.println(sb.toString());
  
  輸出:
  Builder.com!
  
  !moc.redliuB
  
  StringBuffer的優勢
  字符串的使用貫穿於決大多數應用程序,不管是作為用戶界面的標識或在後台處理從數據庫取回的值。通常,這些值並不符合要求,需要處理。
 

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