java--String、StringBuffer、StringBuilder之間的區別:
在Java語言中,共有byte、short、int、long、float、double、boolean、char 8個基本資料型別,其中char型別表示單個字元。在實際的程式設計過程中,我們比較常用的是由多個字元組成的“字串”,由於沒有表示“字串”的基本資料型別,所以Java提供了一個被final修飾、不能被繼承的類String,從而為我們能夠使用字串型別提供了方便。隨著Java語言的不斷髮展,又衍生出了StringBuffer和StringBuilder兩個字串構建器。
對於String、StringBuffer、StringBuilder這三種類型,無論在求職過程中的面試還是以後的實際工作中,我們都要經常面對,所以掌握三者分別的內容、特點、用途、注意事項及三者之間的區別顯得尤為重要。
1. String
通過以上所述,我們已經大致知道String型別是一個被final關鍵字修飾、不能被繼承類,包含在java.lang包。關於String類的例項化,有以下兩種方法,一種是直接賦值法,這種方法最為常用;另一種是傳統方法,使用new關鍵字進行例項化,具體如下:
//1.直接賦值 String str = "Hello World !" ; // str是一個物件,那麼"Hello World !" 就應該儲存在堆記憶體中 //2.傳統方法(構造法) String str = new String("Hello World !");//該方法符合傳統做法,使用關鍵字new進行物件例項化。
String類的具體用法請參照我的另一篇博文,其中對String類的常用方法進行了較為詳細地說明,有興趣的童鞋可以參考參考。
String 類的缺陷 :不能對String類建立的物件進行增、刪、改等操作;
String類不能被繼承。
String 類的特點:任何的字串常量都是String物件,而且String的常量一旦宣告不可改變,如果改變物件內容,改變的只是其引用的指向而已。
2. StringBuffer
StringBuffer 類是為了解決String 類的缺陷中不能對String 類建立的物件進行增、刪、改等操作而產生的。StringBuffer 類有很多和String 類一樣的方法,這些方法在功能上和String中的功能相同。
String類中使用“ + ”來進行字串連線,但是這個操作在StringBuffer類中需要更改為appen() 方法:
public synchronized StringBuffer append(各種資料型別 b)
StringBuffer類中字串連線操作的簡單舉例:
public class Test{
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("Hello").append("World");
fun(sb);
System.out.println(sb);
}
public static void fun(StringBuffer temp) {
temp.append("happy").append("everyday");
}
}
2.1 String 類和 StringBuffer 類的區別:
2.1.1 String的內容無法修改,而StringBuffer的內容可以修改。頻繁修改字串的情況建議使用StringBuffer 類;
2.1.2 StringBuffer 類的內部實現方式和String 類不同,StringBuffer 類在進行字串修改時不產生新的物件。在記憶體的使用上StringBuffer類優於String類;
2.1.3 StringBuffer物件的初始化與String物件的初始化不大相同。通常情況下采用構造方法對StringBuffer的物件進行初始化;
2.1.4 StringBuffer是執行緒安全的,可用於多執行緒。
2.2 String和StringBuffer類不能直接轉換。如果要想互相轉換,可以採用如下原則:
2.2.1 String變為StringBuffer:利用StringBuffer的構造方法或append()方法;
2.2.2 StringBuffer變為String:呼叫toString()方法。
2.3 StringBuffer類中String類沒有的方法:
2.3.1 字串反轉:
public synchronized StringBuffer reverse()
2.3.2 刪除指定範圍的資料:
public synchronized StringBuffer delete(int start, int end)
2.3.3 插入資料
public synchronized StringBuffer insert(int offset, 各種資料型別 b)
3. StringBuilder
在JDK5.0 之後,Java語言有引入了StringBuilder 類,這個類是在StringBuffer類的基礎上產生的。StringBuilder類的效率較低,但允許採用多執行緒的方式進行新增或者刪除字元的操作。如果所有的字串在一個單執行緒中,則應該需要用StringBuilder類。StringBuilder 類和StringBuffer類的api完全相同。
4. String 、StringBuffer 、StringBuilder的區別:
4.1 操作效率方面:StringBuilder > StringBuffer > String;
4.2 執行緒安全方面:StringBuffer是執行緒安全的,可用於多執行緒;StringBuilder是非執行緒安全的,可用於單執行緒;
4.3 頻繁字串操作方面:StringBuilder和StringBuffer優於String;
4.4 String的內容不可修改,StringBuffer和StringBuilder的內容可以修改。這裡的修改指的是字串的內容或長度;
4.5 StringBuffer 採用同步處理,屬於執行緒安全操作;StringBuilder採用非同步處理,屬於執行緒不安全操作。
相關推薦
String、StringBuffer與StringBuilder之間區別 .RP
什麽 方式 tr1 abcd 為什麽 mes strong 速度 一點 最近學習到StringBuffer,心中有好些疑問,搜索了一些關於String,StringBuffer,StringBuilder的東西,現在整理一下。 關於這三個類在字符串處理中的位置不言而喻,
String、StringBuffer與StringBuilder之間區別
安全 .com 學習 ron img build tro ges 變量 大家在最初結束String字符串的時候,都會被教做認為String是不可變的字符串常量,是不可改變的常量。但是我們看下面的一個列子: 為什麽會發生這種情況呢?難道最開始我們學習的就是錯誤的?
自己(轉)String、StringBuffer與StringBuilder之間區別
理解 疑問 多線程 blog gpo string類 body 對象 就是 最近學習到StringBuffer,心中有好些疑問,搜索了一些關於String,StringBuffer,StringBuilder的東西,現在整理一下。 關於這三個類在字符串處理中的位置不言
String、StringBuffer與StringBuilder之間區別?
這三個類之間的區別主要是在兩個方面,即 執行速度 和 執行緒安全 這兩方面。 1. 首先說執行速度,或者說是執行速度, 在這方面執行速度快慢為:StringBuilder > StringBuffer > String String最慢的原
String、StringBuffer與StringBuilder之間區別 以及String 直接賦值和new後賦值區別
這裡是引用他人程式碼: 最近學習到StringBuffer,心中有好些疑問,搜尋了一些關於String,StringBuffer,StringBuilder的東西,現在整理一下。 關於這三個類在字串處理中的位置不言而喻,那麼他們到底有什麼優缺點,到底什麼時候該用誰呢
String、StringBuffer與StringBuilder之間區別(轉)
ons 字符 總結 當前 命令 其它 有一個 system 機制 原文地址https://www.cnblogs.com/goody9807/p/6516374.html String 字符串常量StringBuffer 字符串變量(線程安全)StringBuilder
java中String、StringBuffer和StringBuilder的區別(簡單介紹)
情況 string 建議 code serializa 就是 同步 安全性 之間 簡單介紹 java中用於處理字符串常用的有三個類: 1、java.lang.String 2、java.lang.StringBuffer 3、java.lang.StrungBuilder
Java中String 、StringBuffer和StringBuilder的區別
String 類是不可改變的,所以你一旦建立了 String 物件,那它的值就無法改變了 StringBuffer 和 StringBuilder 類相同點: StringBuffer 和 StringBuilder 類的物件能夠被多次的修改,並且不產生新的未使用物件。 Str
Java之String、StringBuffer和StringBuilder的區別
近期看到StringBuffer,便搜尋整理了一些關於String、StringBuffer和StringBuilder的東西,僅供分享參考。 1、String String:字串常量,字串長度不可變的。Java中String是immutable(不可變)的。先看原始碼: public
圖解Java中String、StringBuffer和StringBuilder的區別
圖解Java中String、StringBuffer和StringBuilder的區別 參考部落格:https://blog.csdn.net/weixin_41101173/article/details/79677982 一、Java中的 String 類——String 是字串常量 1、字
JAVA中String、StringBuffer和StringBuilder的區別
1、String不可以改變,StringBuffer和StringBuilder都是可以改變的 2、StringBuffer是同步的,資料安全,但是效率低。StringBuilder不是同步的,效率高
Java:String、StringBuffer和StringBuilder的區別與使用。
1 String String:字串常量,字串長度不可變。Java中String是immutable(不可變)的。 String類的包含如下定義: /** The value is used for character storage. */ privatefinalchar value[];
String、StringBuffer和StringBuilder的區別
字符 同步 內容 array 模式 改變 nat test 方式 1 String String:字符串常量,字符串長度不可變。Java中String是immutable(不可變)的。 String類的包含如下定義: [java] view plaincopy
String、StringBuffer與StringBuilder的區別
string 單線程 public pan color 緩沖 ron 很多 bsp String 字符串常量StringBuffer 字符串變量(線程安全)StringBuilder 字符串變量(非線程安全) 首先三者主要輸在運行速度和線程安全這兩位方面。
String、StringBuffer與StringBuilder的區別及應用場景
1 String、StringBuffer與StringBuilder區別 (1)區別 String內容不可變,StringBuffer和StringBuilder內容可變; StringBuilder非執行緒安全(單執行緒使用),String與StringBuffer執行緒安全(多執
String、StringBuffer和StringBuilder的區別(理論)
String、StringBuffer和StringBuilder的區別: 1.String不可變字串,賦值都會新建物件,除非字串池中已經存在,修改的不是值而是引用 2.StringBuffer和StringBulider字串 在原有的基礎上進行修改,當前操作的都是字串 3.S
【Java基礎】String,StringBuffer,StringBuilder之間的區別
對於這三個類,先總體來理解一下: 對String,你建立了一個String,你能通過set方法改變它的長度length嗎?顯然是不行的! 但 StringBuffer 可以! String 字串常量 StringBuffer 字串變數(執行緒安全) StringBu
經典問題--String、StringBuffer和StringBuilder的區別
String、StringBuffer和StringBuilder的區別 這個問題主要主要從兩個方面去回答 - **速度 - **執行緒安全 String String字串不斷賦值的過程,JVM處理的處理是:不斷的建立物件和回收物件,所以速度是
優美的講解String、StringBuffer和StringBuilder的區別跟執行效率
在大部分情況下 StringBuffer > StringStringBufferJava.lang.StringBuffer執行緒安全的可變字元序列。一個類似於 String 的字串緩衝區,但不能修改。雖然在任意時間點上它都包含某種特定的字元序列,但通過某些方法呼叫可以改變該序列的長度和內容。可將字串
JAVA學習|String,StringBuffer,StringBuilder的區別與聯絡
String,StringBuffer,StringBuilder的區別與聯絡 String,StringBuffer,StringBuilder的區別這個問題幾乎是面試必問的題 ,最近學習的時候恰好遇到,就順便總結一下。 本文參考了以下文章: String StringBuild