国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

StringBuffer幫你減輕Java的負(fù)擔(dān)

2019-11-17 05:58:39
字體:
供稿:網(wǎng)友

處理文本值是程序員的日常工作,通常用標(biāo)準(zhǔn)的java String類來完成與文本有關(guān)的需求。它對于很多小任務(wù)確實很適用,但是假如處理的是大型任務(wù),它會大量消耗系統(tǒng)資源。由于這個原因,JDK引入了StringBuffer類以提供一條處理字符串的有效路徑。讓我們來看看怎樣用這個類來提升性能。

為什么不用標(biāo)準(zhǔn)的String?

Java String對象是常量字符串。一旦被初始化和付值,它的值和所分配的內(nèi)存就被固定了。假如硬要改變它的值,將會產(chǎn)生一個包含新值的新String對象。這就是String對象會消耗掉很多資源的原因。下面的代碼創(chuàng)建了一個String對象并使用串聯(lián)(+)符號來為它添加更多字符:

String sample1=new String(“Builder.com”);

sample1+=”is”;

sample1+=”the place”;

sample1+=”to be.”;

系統(tǒng)最終會創(chuàng)建四個String對象來完成上面的替換。其中第一個的文本是Builder.com。然后每次添加文本時都會創(chuàng)建一個新的對象。

這種方法的問題在于為了這么一個簡單的過程而消耗了太多的資源。在這個例子中其影響也許很小(指給出了很少的代碼),但是在一個擁有多得多操作的大型應(yīng)用程序中這樣做就會使性能下降。StringBuffer類所要解決的正是這個問題。

用StringBuffer處理字符串
StringBuffer類被設(shè)計用與創(chuàng)建和操作動態(tài)字符串信息。為該對象分配的內(nèi)存會自動擴(kuò)展以容納新增的文本。有三種方法來創(chuàng)建一個新的StringBuffer對象:使用初始化字符串、設(shè)定大小以及使用默認(rèn)構(gòu)造函數(shù):

StringBuffer sb=new StringBuffer();

StringBuffer sb=new StringBuffer(30);

StringBuffer sb=new StringBuffer(“Builder.com”);

第一行創(chuàng)建了不包含任何文本的對象,默認(rèn)的容量是16個字符。類的第二個實例也不包含文本,容量是30個字符,最后一行創(chuàng)建了一個擁有初始化值的對象。StringBuffer類位于java.lang基礎(chǔ)包中,因此要使用它的話不需要非凡的引入語句。
一旦創(chuàng)建了StringBuffer類的對象,就可以使用StringBuffer類的大量方法和屬性。最顯著的方法是append,它將文本添加到當(dāng)前StringBuffer對象內(nèi)容的結(jié)尾。下面的代碼示例了append方法的語法:

StringBuffer sb=new StringBuffer();

sb.append(“B”);

sb.append(“u”);

sb.append(“i”);

sb.append(“l(fā)”);

sb.append(“d”);

sb.append(“e”);

sb.append(“r”);

sb.append(“.com”);

System.out.PRintln(sb.toString());

這些代碼創(chuàng)建了Builder.com字符串并將它送往標(biāo)準(zhǔn)輸出,但是只創(chuàng)建了一個對象。假如使用String對象就需要八個以上的對象。注重代碼利用了StringBuffer類的toString方法。這個方法將其內(nèi)容轉(zhuǎn)換成一個可以被用于輸出的字符串對象。它答應(yīng)操作對應(yīng)的文本用于輸出或數(shù)據(jù)存儲。

append方法有十種重載形式,答應(yīng)將各種類型的數(shù)據(jù)添加到對象的末尾。StringBuffer類還提供了處理對象內(nèi)部數(shù)據(jù)的方法。
StringBuffer的容量

可以使用capacity和length方法來設(shè)定對象內(nèi)的字符數(shù)。capacity方法返回為對象分配的字符數(shù)(內(nèi)存)。假如超過了容量,它會自動擴(kuò)展以符合需求。length方法返回對象目前存儲的字符數(shù)。可以通過setLength方法來增加其長度。另外,對象的容量可以通過ensureCapacity方法來擴(kuò)展。它建立了對象的最小容量,因此假如超出則不會有任何問題。下面的代碼用到了這些方法:

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());

代碼設(shè)置了字符串的容量并為其付值。length屬性被重新設(shè)置了,因此文本被截斷了。輸入結(jié)果如下:

Builder.com is awesome!

Builder.com

操作字符串
還有更多的方法來處理存儲在StringBuffer對象內(nèi)的字符串。以下列舉了幾個例子:

CharAt返回字符串中的單個字符。
SetCharAt為字符串中的單個字符付值或進(jìn)行替換。
GetChars返回字符串的一個子字符串。
Insert在字符串指定位置插入值。它有多個重載版本以容納各種數(shù)據(jù)類型。
Substring返回字符串的一個子集。
Reverse倒置StringBuffer的內(nèi)容。
所有的方法對于操作值來說都是很有用的,但是reverse方法最酷了——它使你只用一個調(diào)用就輕松地倒置了一個字符串。下面的代碼和數(shù)出結(jié)果作了示范:

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的優(yōu)勢
字符串的使用貫穿于決大多數(shù)應(yīng)用程序,不管是作為用戶界面的標(biāo)識或在后臺處理從數(shù)據(jù)庫取回的值。通常,這些值并不符合要求,需要處理。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 肃南| 买车| 望江县| 丰台区| 文安县| 万山特区| 老河口市| 陵川县| 新和县| 白河县| 南开区| 大邑县| 漠河县| 麟游县| 泰和县| 永寿县| 九龙城区| 繁峙县| 辉南县| 莱芜市| 义马市| 龙里县| 兴海县| 东城区| 田东县| 夏邑县| 惠东县| 舞阳县| 合水县| 昭觉县| 威海市| 达日县| 龙泉市| 久治县| 根河市| 南康市| 隆回县| 渭南市| 潜江市| 嘉善县| 闵行区|