String StringBuffer StringBuilder的區別(前端面試必備)
String StringBuffer StringBuilder的區別(前端面試必備)
String
String建立物件原始碼
首先要明確String建立的字串是一個物件型別
- 斷子絕孫類,來看一下String類的構造方法,為final型別,沒有子類可以繼承它,可以看到這個類是用一個陣列型別去接收建立的字串的,我們知道,陣列內的資料無法改變,則String型別的資料是無法改變的,所以沒有個用String建立的物件都有各自獨立的空間也就是記憶體地址。
public final class String implements...{
private final char value[];
}
String建立字串的兩個方法和區別
該部分常講到常量池,請不懂常量池的小夥伴先移步到常量池的介紹
1.通過引號直接建立字串
String str="1280809174";
通過該方法建立一個字串,因為1280809174是一個常量,首先會從常量池中判斷是否已經存在1280809174這個物件,如果不存在,則會分配空間建立該物件,若常量池中存在該物件,即有一個常量等於1280809174,則不會分配空間,直接返回原有的該物件的記憶體地址。如下面例子,最後結果返回true
String str1="1280809174";
String str2="1280809174";
if(str1==str2){
return true;
}
2.通過new String()建立
String str=new String("1280809174");
這種方式它將會建立兩個1280809174物件,為什麼呢?
首先1280809174 是一個常量字串,因此會先在常量池中建立 1280809174字串物件,然後在堆中再建立一個字串物件,將 1280809174的字元陣列複製到堆中新建立的物件的字元陣列上,因此該方式不僅會在堆中,還會在常量池中建立1280809174 字串物件。 如下程式碼,將返回false
String str1=new String("123");
String str2=new String("123");
System.out.println(str1==str2);
StringBuffer
StringBuffer 是一個執行緒安全的可變的字元序列。它繼承於AbstractStringBuilder,實現了CharSequence介面。執行緒安全指能夠是執行緒同步的意思,就是當一個程式對一個執行緒安全的方法或者語句進行訪問的時候,其他的不能再對他進行操作了,必須等到這次訪問結束以後才能對這個執行緒安全的方法進行訪問。能夠運用於多執行緒。
StringBuilder
執行緒不安全,但相比較於StringBuffer效率更高。
總結
(1)如果要操作少量的資料用 String;
(2)多執行緒操作字串緩衝區下操作大量資料 StringBuffer;
(3)單執行緒操作字串緩衝區下操作大量資料 StringBuilder。
相關文章
- 面試必知:String、StringBuilder、StringBuffer的區別面試UI
- String、StringBuffer、StringBuilder區別?UI
- String,StringBuffer,StringBuilder區別UI
- String,StringBuilder,StringBuffer的區別UI
- String、StringBuffer、StringBuilder的區別UI
- String、StringBuilder、StringBuffer的區別UI
- String,StringBuffer與StringBuilder的區別UI
- Android- String、StringBuffer、StringBuilder區別AndroidUI
- 從原始碼看String,StringBuffer,StringBuilder的區別原始碼UI
- Java中的String,StringBuilder,StringBuffer三者的區別JavaUI
- 面試常備,字串三劍客 String、StringBuffer、StringBuilder面試字串UI
- 『Java 語法基礎』String、StringBuffer 與 StringBuilder 的區別JavaUI
- 你必須搞清楚的String,StringBuilder,StringBufferUI
- StringBuffer和StringBuilder的區別UI
- StringBuilder和StringBuffer的區別UI
- String、StringBuffer、StringBuilder的理解UI
- stringbuilder和stringbuffer區別UI
- String、StringBuilder和StringBufferUI
- String、StringBuffer、StringBuilder剖析UI
- String、StringBuffer和StringBuilder類的UI
- 【Java】String、StringBuilder和StringBufferJavaUI
- Java 之String、StringBuffer 和 StringBuilder 三者區別介紹JavaUI
- StringBuffer 和 StringBuilder 的 3 個區別UI
- String StringBuild StringBuffer的區別UI
- String和StringBuilder的區別UI
- StringBuilder和String 的區別?UI
- 老生常談 String、StringBuilder、StringBufferUI
- C# string、stringBuffer和stringBuilderC#UI
- java複習之 String,StringBuffer,StringBuilderJavaUI
- 67. StringBuilder和String 的區別?UI
- JAVA面試題 StringBuffer和StringBuilder的區別,從原始碼角度分析?Java面試題UI原始碼
- [java基礎]StringBuilder和StringBuffer的3個區別JavaUI
- Java容器深入淺出之String、StringBuffer、StringBuilderJavaUI
- Java中String,StringBuffer,StringBuilder基礎知識JavaUI
- 認識Java中String與StringBuffer以及StringBuilderJavaUI
- StringBuffer和StringBuilderUI
- [轉載] 整理下java中stringBuilder和stringBuffer兩個類的區別JavaUI
- 【資料結構】串(String、StringBuilder、StringBuffer)的JAVA程式碼實現資料結構UIJava