欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java_String和StringBuffer區(qū)別分析

 更新時(shí)間:2013年04月14日 10:45:46   作者:  
JAVA平臺(tái)提供了兩個(gè)類:String和StringBuffer,它們可以儲(chǔ)存和操作字符串,即包含多個(gè)字符的字符數(shù)據(jù)。這個(gè)String類提供了數(shù)值不可改變的字符串。

而這個(gè)StringBuffer類提供的字符串進(jìn)行修改。當(dāng)你知道字符數(shù)據(jù)要改變的時(shí)候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動(dòng)態(tài)構(gòu)造字符數(shù)據(jù)。

在java中有3個(gè)類來負(fù)責(zé)字符的操作。

1.Character 是進(jìn)行單個(gè)字符操作的,

2.String 對(duì)一串字符進(jìn)行操作。不可變類。

3.StringBuffer 也是對(duì)一串字符進(jìn)行操作,但是可變類。

String:
是對(duì)象不是原始類型.
為不可變對(duì)象,一旦被創(chuàng)建,就不能修改它的值.
對(duì)于已經(jīng)存在的String對(duì)象的修改都是重新創(chuàng)建一個(gè)新的對(duì)象,然后把新的值保存進(jìn)去.
String 是final類,即不能被繼承.

StringBuffer:
是一個(gè)可變對(duì)象,當(dāng)對(duì)他進(jìn)行修改的時(shí)候不會(huì)像String那樣重新建立對(duì)象
它只能通過構(gòu)造函數(shù)來建立,
StringBuffer sb = new StringBuffer();
note:不能通過付值符號(hào)對(duì)他進(jìn)行付值.
sb = "welcome to here!";//error
對(duì)象被建立以后,在內(nèi)存中就會(huì)分配內(nèi)存空間,并初始保存一個(gè)null.向StringBuffer
中付值的時(shí)候可以通過它的append方法.
sb.append("hello");

以上為摘抄,網(wǎng)上常見的,以下為自己添加的見解:

地址不可更改,長度和內(nèi)容可改。append()方法是追加,超過預(yù)留內(nèi)存時(shí),內(nèi)存翻倍。

效率比較:StringBuffer比String高。因?yàn)镾tringBuffer有預(yù)留空間一直追加,只是對(duì)一個(gè)對(duì)象進(jìn)行操作。而String是不能被修改的,只能重復(fù)的去創(chuàng)建對(duì)象來實(shí)現(xiàn)修改?!绻l繁的對(duì)字符串進(jìn)行追加、替換、修改、插入、刪除操作,最好使用StringBuffer。如果必須用String可以使用StringBuffer調(diào)用toString()來轉(zhuǎn)換成String即可。

復(fù)制代碼 代碼如下:

public static void main(String[] args) {
         String a="";
         long begin=System.currentTimeMillis();
         for (int i = 0; i <10000; i++) {
             a+=i;
         }
         long end=System.currentTimeMillis();
         System.out.println("String運(yùn)行時(shí)間:"+(end-begin));
         System.out.println("-----------------");
         StringBuffer b=new StringBuffer();
         long begin2=System.currentTimeMillis();
         for (int i = 0; i <10000; i++) {
             b.append(i);
         }
         long end2=System.currentTimeMillis();
         System.out.println("StringBuffer運(yùn)行時(shí)間:"+(end2-begin2));
     }

我的機(jī)子比較垃圾,執(zhí)行下來結(jié)果是

String運(yùn)行時(shí)間:164593
-----------------
StringBuffer運(yùn)行時(shí)間:31

而且String有contains方法,而StringBuffer沒有。contains是包含的意思,這里可以在回憶下contains方法

復(fù)制代碼 代碼如下:

 public static void main(String[] args) {
         String a="abc";
         boolean str=a.contains("b");
         System.out.println(str);
     }

執(zhí)行結(jié)果為

true

相關(guān)文章

最新評(píng)論