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)上常見的,以下為自己添加的見解:
地址不可更改,長度和內(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即可。
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中char數(shù)組(字符數(shù)組)與字符串String類型的轉(zhuǎn)換方法
- java 中String和StringBuffer與StringBuilder的區(qū)別及使用方法
- 詳解Java中字符串緩沖區(qū)StringBuffer類的使用
- Java那點(diǎn)事——StringBuffer與StringBuilder原理與區(qū)別
- 全面解釋java中StringBuilder、StringBuffer、String類之間的關(guān)系
- Java之String、StringBuffer、StringBuilder的區(qū)別分析
- Java中字符數(shù)組、String類、StringBuffer三者之間相互轉(zhuǎn)換
相關(guān)文章
SpringBoot配置主從數(shù)據(jù)庫實(shí)現(xiàn)讀寫分離
現(xiàn)在的 Web 應(yīng)用大都是讀多寫少,本文主要介紹了SpringBoot配置主從數(shù)據(jù)庫實(shí)現(xiàn)讀寫分離,具有一定的參考價(jià)值,感興趣的可以了解一下2023-11-11SpringBoot 請(qǐng)求參數(shù)忽略大小寫的實(shí)例
這篇文章主要介紹了SpringBoot 請(qǐng)求參數(shù)忽略大小寫的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01Java的反射機(jī)制---動(dòng)態(tài)調(diào)用對(duì)象的簡單方法
下面小編就為大家?guī)硪黄狫ava的反射機(jī)制---動(dòng)態(tài)調(diào)用對(duì)象的簡單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07Spring?Boot項(xiàng)目如何使用Maven打包并帶上依賴
在這篇博客中,介紹如何使用Maven將Spring?Boot項(xiàng)目及其依賴項(xiàng)打包成一個(gè)可執(zhí)行的jar文件。我們將使用Spring?Boot的spring-boot-maven-plugin插件來完成這個(gè)任務(wù),感興趣的朋友跟隨小編一起看看吧2023-06-06Java手機(jī)號(hào)碼工具類示例詳解(判斷運(yùn)營商、獲取歸屬地)
這篇文章主要介紹了Java手機(jī)號(hào)碼工具類示例詳解,通過手機(jī)號(hào)碼來判斷運(yùn)營商獲取歸屬地,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02Java中使用websocket實(shí)現(xiàn)在線聊天功能
這篇文章主要介紹了Java中使用websocket實(shí)現(xiàn)在線聊天功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-02-02Java如果在try里面執(zhí)行return還會(huì)不會(huì)執(zhí)行finally
這篇文章主要介紹了Java如果在try里面執(zhí)行return,那么還會(huì)不會(huì)執(zhí)行finally,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01