java_String和StringBuffer區(qū)別分析
而這個(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)上常見的,以下為自己添加的見解:
地址不可更改,長(zhǎ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)修改。——如果頻繁的對(duì)字符串進(jìn)行追加、替換、修改、插入、刪除操作,最好使用StringBuffer。如果必須用String可以使用StringBuffer調(diào)用toString()來轉(zhuǎn)換成String即可。
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方法
public static void main(String[] args) {
String a="abc";
boolean str=a.contains("b");
System.out.println(str);
}
執(zhí)行結(jié)果為
true
- Java中字符數(shù)組、String類、StringBuffer三者之間相互轉(zhuǎn)換
- java stringbuffer的用法示例
- java 中String和StringBuffer與StringBuilder的區(qū)別及使用方法
- JAVA中String類與StringBuffer類的區(qū)別
- Java之String、StringBuffer、StringBuilder的區(qū)別分析
- Java那點(diǎn)事——StringBuffer與StringBuilder原理與區(qū)別
- Java中String、StringBuffer和StringBuilder底層實(shí)現(xiàn)深入剖析
相關(guān)文章
劍指Offer之Java算法習(xí)題精講字符串與二叉搜索樹
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03
SpringBoot集成Lettuce客戶端操作Redis的實(shí)現(xiàn)
本文主要介紹了SpringBoot集成Lettuce客戶端操作Redis的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
java hasNextInt判斷是否為數(shù)字的方法
今天小編就為大家分享一篇java hasNextInt判斷是否為數(shù)字的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07

