java_String和StringBuffer區(qū)別分析
而這個StringBuffer類提供的字符串進行修改。當你知道字符數(shù)據(jù)要改變的時候你就可以使用StringBuffer。典型地,你可以使用StringBuffers來動態(tài)構造字符數(shù)據(jù)。
在java中有3個類來負責字符的操作。
1.Character 是進行單個字符操作的,
2.String 對一串字符進行操作。不可變類。
3.StringBuffer 也是對一串字符進行操作,但是可變類。
String:
是對象不是原始類型.
為不可變對象,一旦被創(chuàng)建,就不能修改它的值.
對于已經存在的String對象的修改都是重新創(chuàng)建一個新的對象,然后把新的值保存進去.
String 是final類,即不能被繼承.
StringBuffer:
是一個可變對象,當對他進行修改的時候不會像String那樣重新建立對象
它只能通過構造函數(shù)來建立,
StringBuffer sb = new StringBuffer();
note:不能通過付值符號對他進行付值.
sb = "welcome to here!";//error
對象被建立以后,在內存中就會分配內存空間,并初始保存一個null.向StringBuffer
中付值的時候可以通過它的append方法.
sb.append("hello");
以上為摘抄,網(wǎng)上常見的,以下為自己添加的見解:
地址不可更改,長度和內容可改。append()方法是追加,超過預留內存時,內存翻倍。
效率比較:StringBuffer比String高。因為StringBuffer有預留空間一直追加,只是對一個對象進行操作。而String是不能被修改的,只能重復的去創(chuàng)建對象來實現(xiàn)修改。——如果頻繁的對字符串進行追加、替換、修改、插入、刪除操作,最好使用StringBuffer。如果必須用String可以使用StringBuffer調用toString()來轉換成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運行時間:"+(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運行時間:"+(end2-begin2));
}
我的機子比較垃圾,執(zhí)行下來結果是
String運行時間:164593
-----------------
StringBuffer運行時間: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í)行結果為
true
- Java中char數(shù)組(字符數(shù)組)與字符串String類型的轉換方法
- java 中String和StringBuffer與StringBuilder的區(qū)別及使用方法
- 詳解Java中字符串緩沖區(qū)StringBuffer類的使用
- Java那點事——StringBuffer與StringBuilder原理與區(qū)別
- 全面解釋java中StringBuilder、StringBuffer、String類之間的關系
- Java之String、StringBuffer、StringBuilder的區(qū)別分析
- Java中字符數(shù)組、String類、StringBuffer三者之間相互轉換
相關文章
SpringBoot配置主從數(shù)據(jù)庫實現(xiàn)讀寫分離
現(xiàn)在的 Web 應用大都是讀多寫少,本文主要介紹了SpringBoot配置主從數(shù)據(jù)庫實現(xiàn)讀寫分離,具有一定的參考價值,感興趣的可以了解一下2023-11-11
Java中使用websocket實現(xiàn)在線聊天功能
這篇文章主要介紹了Java中使用websocket實現(xiàn)在線聊天功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-02-02
Java如果在try里面執(zhí)行return還會不會執(zhí)行finally
這篇文章主要介紹了Java如果在try里面執(zhí)行return,那么還會不會執(zhí)行finally,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

