String,StringBuffer,StringBuilder的異同總結
1.三者都是final類,都不允許被繼承。
2.String長度是不可變的,而另外兩個長度是可變的,且後面兩個可以儲存不同型別資料,是一個容器。
3.StringBuffer是執行緒安全的,StringBuilder是執行緒不安全的,但它們中的方法都是相同的,只不過StringBuffer在StringBuilde r的方法之上添加了synchronized修飾。
4.StringBuffer是JDK1.0就有的,而StringBuilder是JDK1.5出現的,其比StringBuffer擁有更好的效能,因為它不執行同步,所以速度更快。
5.如果一個String型別的字串,在編譯時就可確定是一個字串常量,則編譯完成之後,字串會自動拼接成一個常量。此時,String的速度比StringBuffer和StringBuilder的效能好的多。
6.String 類在用+號連線字串時會建立新的字串。看下面程式碼:
public static void main(String[] args) {
String s = "abc";
System.out.println(s == (s + "123"));
}//列印結果為false
7.在Java中,通過使用+號來串聯字串時,實際上底層會轉成通過StringBuilder例項的append()方法來實現。
在這裡記錄一個程式碼級別上的效能優化Tip:
字串連線是程式設計中非常普遍的操作,同時也是低效率的操作。前面說過,使用+來追加字串的問題在於,每次操作都會分配新的字串。
在上面程式碼中,用StringBuilder的append效率更高,尤其對於頻繁進行字串操作的程式來說效率更加顯著。public static String stringAppendLoop(){ String s = ""; for (int i = 0;i < 10000; i++) { if (s.length()>0) s += ", "; s += "bar"; } return s; } public static String stringAppendBuilderLoop(){ StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i<10000; i++) { if (stringBuilder.length() > 0) stringBuilder.append(", "); stringBuilder.append("bar"); } return stringBuilder.toString(); }
相關推薦
對於String 與StringBuffer 和StringBuilder的總結
實現 pac 安全 ack 其他 space 事情 nbsp 序列 StringBuffer 1,線程安全的可變字符序列。一個類似於 String 的字符串緩沖區,但不能修改 2,雖然在任意時間點上它都包含某種特定的字符序列,但通過某些方法調用可以改變該序列的長度和內容
String,StringBuffer,StringBuilder的異同總結
1.三者都是final類,都不允許被繼承。2.String長度是不可變的,而另外兩個長度是可變的,且後面兩個可以儲存不同型別資料,是一個容器。3.StringBuffer是執行緒安全的,StringBuilder是執行緒不安全的,但它們中的方法都是相同的,只不過StringB
深入瞭解String,StringBuffer和StringBuilder三個類的異同
Java提供了三個類,用於處理字串,分別是String、StringBuffer和StringBuilder。其中StringBuilder是jdk1.5才引入的。 這三個類有什麼區別呢?他們的使用場景分別是什麼呢? 本文的程式碼是在jdk12上執行的,jdk12和jdk5,jdk8有很大的區別,特別是Str
Java學習筆記(二)-------String,StringBuffer,StringBuilder區別以及映射到的同步,異步相關知識
ringbuf 等待 java學習筆記 java學習 單線程 回復 改變 hashtable ble 1. String是不可變類,改變String變量中的值,相當於開辟了新的空間存放新的string變量 2. StringBuffer 可變的類,可以通過append方法改
String,StringBuffer,StringBuilder的區別
並不會 初始 jvm 小明 mce syn color turn 優點 數據結構: 數據結構是指相互之間存在一種或多種特定關系的數據元素的集合。 比如數據庫就是對硬盤中的數據進行有規則的管理,可以進行增刪改查工作,而良好的數據結構可以優化這些操作, 也許
String,StringBuffer,StringBuilder三者的區別
方法 bsp 常量 可變 增加 推薦 效率 HR 單線程 相同點: String,StringBuffer,StringBuilder,都是final類,不允許被繼承,在本質上都是字符數組, 不同點: 1.String的長度是不可變的而後兩者長度可變,在進行連接操作時,St
查缺補漏——String,StringBuffer,StringBuilder區別及用法
最近在看併發及虛擬機器部分,介紹了String是不可變的物件,順便複習了與string相關的類。 一 String是不可變物件,它一定是執行緒安全的,因為當我們呼叫substring(),replace(),concat()這些方法時,都不會影響它原來的值,只會返回一個新構造的字串物件,因此當要
JAVA學習|String,StringBuffer,StringBuilder的區別與聯絡
String,StringBuffer,StringBuilder的區別與聯絡 String,StringBuffer,StringBuilder的區別這個問題幾乎是面試必問的題 ,最近學習的時候恰好遇到,就順便總結一下。 本文參考了以下文章: String StringBuild
String,StringBuffer,StringBuilder聯絡,區別
三者的不同點: 看原始碼可以發現String類使用字元陣列來儲存字串,陣列是final修飾的,也沒有insert() append()delete()這些方法,String物件是一個常量 /** The value is used for character stora
【Java基礎】String,StringBuffer,StringBuilder之間的區別
對於這三個類,先總體來理解一下: 對String,你建立了一個String,你能通過set方法改變它的長度length嗎?顯然是不行的! 但 StringBuffer 可以! String 字串常量 StringBuffer 字串變數(執行緒安全) StringBu
String,StringBuffer,StringBuilder的
一 相同點 都可以進行儲存字串,一般情況下效率StringBuilder>StringBuffer>String 二 不同點 String : String字串常量,是不可變的。因此每次定義或者改變String的值,其實是改變的該物件的引用,如果需要
解析String,StringBuffer和StringBuilder
1.String String是一個被final定義的類,所以一旦建立了String物件,其值不可被改變。 當我們更改字串的值時,虛擬機器會新建一個String物件,並賦予其值, 所以我們每一次更改String的值時候,記憶體中在做銷燬物件,新建物件的操作,其效率非常低
聊聊String,StringBuffer,StringBuilder
一個蘿蔔一個坑 (面試遇到的坑) 1.String 能不能被繼承呢? 從沒見過String被繼承過,那String就是不能被繼承了,為什麼不能被繼承呢,因為String是由final關鍵字修飾的,final 關鍵字宣告類可以把類定義為不能繼承的,即最終類;或者用於修飾方法,該方法不能被子
Java開發者如何正確的使用String,StringBuffer,StringBuilder類
通過前面的文章,我們知道String類最大的特點是不可變性,這意味著對String類的任何修改都會新生成一個字串,比如你執行了String類的substring,replace,toUpperCase,toLowerCase,trim方法都會生成一個新的字串,一旦你的程式對字
String,StringBuffer,StringBuilder個人認為較重要的區別
今天在整理不可變物件知識點時,突然看到了String,StringBuffer,StringBuilder三者的區別,這裡就挑一些我認為比較重要的點記錄一下,方便日後檢視。 String,StringBuffer,StringBuilder,都是final類,
Java中String,StringBuffer,StringBuilder的區別及相關常用函式
今天在刷演算法題的時候,題目上傳入的引數型別是StringBuffer,而需要返回的卻是String型別。其中我在寫的時候用了兩種不同的寫法產生的結果相同,但是速度卻不同。所以在網上查找了一些資料。下面做一個String,StringBuffer,StringBuilder的區別及常用函式介
面試系列-String,StringBuffer,StringBuilder三者區別
String,StringBuffer以及StringBuilder三者的區別主要是在兩個方面,即執行速度和執行緒安全這兩方面。 執行速度 從快到慢順序:StringBuilder > StringBuffer > StringString最慢的原因;String為字串常量,而StringBu
Java String為什麼是不可變類,StringBuffer與StringBuilder區別
熟悉Java的都知道String類是不可變,但String類為什麼設計成不可變類,如何做到不可變沒有仔細想過。 String為什麼設計成不可變類? 1.符合Java字串池的設計方式。 Strin
Java中,String、StringBuffer、StringBuilder區別與使用
一、簡介 在 Java 語言中,共有 8 個基本的資料型別,分別為:byte、short、int、long、float、double、boolean 和 char,其中 char 型別用於表示單個字元,例如 a、b、c 、A、B、C、& 這些大小寫
String,StringBuffer,StringBuilder類之間的區別和使用禁忌
轉自:https://blog.csdn.net/u010454030/article/details/80486136我們知道String類最大的特點是不可變性,這意味著對String類的任何修改都會新生成一個字串,比如你執行了String類的substring,repla