熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

StringBuffer幫你減輕Java的負擔

2013-11-15 11:35:12  來源: JSP教程 

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