區別:String類別是不可變類,當一個String物件被創建,則包含在物件中的字元序列是不可改變的,直到物件被銷毀;StringBuffer物件代表可變字串對象,且線程安全;StringBuilder類別代表可變字串對象,且非線程安全。
String、StringBuffer與StringBuilder的差異:
String
String類別是不可變類,也就是一旦一個String物件被建立以後,包含在這個物件中的字元序列是不可改變的,直到這個物件被銷毀。
這個是String類別的解釋,之前小鹹兒看到這個情況,不能理解上述的解釋,如下
String a = "123"; a = "456"; // 打印出来的a为456 System.out.println(a)
看到這裡,小鹹兒不明白了,這不是明明已經對他進行修改了嗎?為什麼還說他是不可變類呢?
經過小鹹兒和小夥伴們的學習,明白String類別不可變在哪裡體現出來的,接下來就看一張上述a物件的記憶體儲存空間圖
可以看出來,再次給a賦值時,並不是對原來堆中實例對象進行重新賦值,而是生成一個新的實例對象,並且指向“456”這個字符串, a則指向最新產生的實例對象,先前的實例對象仍然存在,如果沒有再次被引用,則會被垃圾回收。
StringBuffer
StringBuffer物件則代表一個字元序列可變的字串,當一個StringBuffer被建立以後,透過StringBuffer提供的append ()、insert()、reverse()、setCharAt()、setLength()等方法可以改變這個字串物件的字元序列。一旦透過StringBuffer產生了最終想要的字串,就可以呼叫它的toString()方法將其轉換為一個String物件。
StringBuffer b = new StringBuffer("123"); b.append("456"); // b打印结果为:123456 System.out.println(b);
在看一下b物件的記憶體空間圖:
所以說StringBuffer物件是一個字元序列可變的字串,它沒有重新產生一個對象,而且在原來的對像中可以連接新的字串。
StringBuilder
StringBuilder類別也代表可變字串物件。實際上,StringBuilder和StringBuffer基本上相似,兩個類別的建構器和方法也基本上相同。不同的是:StringBuffer是執行緒安全的,而StringBuilder則沒有實作執行緒安全功能,所以效能略高。
StringBuffer是如何實作執行緒安全的呢?
StringBuffer類別中實作的方法:
#StringBuilder類別中實作的方法:
由此可見,StringBuffer類別中的方法都加入了synchronized關鍵字,也就是為這個方法增加了一個鎖,用來確保執行緒安全。
Java9的改進
Java9改進了字串(包括String、StringBuffer、StringBuilder)的實作。在Java9以前字串採用char[]數組來保存字符,因此字串的每個字符佔2字節;而Java9的字串採用byte[]數組再加一個encoding-flag字段來保存字符,因此字符串的每個字元只佔1位元組。所以Java9的字串比較節省空間,字串的函式方法也沒有受到影響。
更多程式相關知識,請造訪:程式設計入門! !
以上是string、stringbuffer和stringbuilder的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了各種Java垃圾收集算法(串行,並行,CMS,G1,ZGC),它們的性能影響和適合大量堆的應用。

本文討論了Java虛擬機(JVM),詳細介紹了其在不同平台運行Java程序中的作用。它說明了JVM的內部流程,密鑰組件,內存管理,垃圾收集和性能Optimizatio

Java的Nashorn Engine可以在Java應用程序中啟用JavaScript腳本。關鍵步驟包括設置Nashorn,管理腳本和優化性能。主要問題涉及安全性,內存管理和未來兼容性

Java的Try-with-Resources通過自動關閉文件流或數據庫連接等資源來簡化資源管理,從而提高代碼可讀性和可維護性。

Java枚舉代表固定的值集,通過自定義方法和構造函數提供類型安全性,可讀性和其他功能。它們增強了代碼組織,可用於開關語句中以進行有效的價值處理。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3漢化版
中文版,非常好用

Dreamweaver Mac版
視覺化網頁開發工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器